从脚本调用时 coreutils date 不返回时区

从脚本调用时 coreutils date 不返回时区

在终端中,行的输出

TZ="Australia/Broken_Hill" date -d '2021-4-26 09:29'
TZ="Australia/Broken_Hill" date -d '2021-4-26 09:29' +%Z

Mon Apr 26 09:29:00 AM ACST 2021
ACST

相比之下,如果我./script.sh沿着线跑

date_in="2021-4-26 09:29"
tz_in="Australia/Broken_Hill"
date_out=$(TZ=\"$tz_in\" date -d "$date_in")
tz_out=$(TZ=\"$tz_in\" date -d "$date_in" +%Z)
echo $date_out
echo $tz_out

输出是

Mon Apr 26 09:29:00 AM 2021
# empty line

为什么从脚本调用时省略时区?

谢谢!
克里斯

答案1

为什么要引用引号字符?您必须更改\""

date_in="2021-4-26 09:29"
tz_in="Australia/Broken_Hill"
date_out=$(TZ="$tz_in" date -d "$date_in")
tz_out=$(TZ="$tz_in" date -d "$date_in" +%Z)
echo $date_out
echo $tz_out

答案2

我混淆了转义,因为它是需要的

date_in="2021-4-26 09:29"
tz_in="Australia/Broken_Hill"
time=$(date -d "TZ=\"$tz_in\" $date_in")
echo $time

相关内容