在终端中,行的输出
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