我在 Bash 脚本中定义了一个变量,如下所示:
BIRTHDAY="1993-01-11 11:11 +08:00"
并将其转换为纪元,date
然后echo
使用echo $(date -d $BIRTHDAY +%s)
.
但是,我收到错误:date: extra operand ‘+08:00’
。
但是,它可以在 bash 交互式 shell 上运行:
➜ ~ BIRTHDAY="1993-01-11 11:11 +08:00"
➜ ~ date -d $BIRTHDAY +%s
726721860
➜ argos echo $(date -d $BIRTHDAY +%s)
726721860
我也尝试运行echo $(date -d \"$BIRTHDAY\" +%s)
,但这也不起作用。
那么,这有什么问题吗?
答案1
您需要引用"$BIRTHDAY"
,如下所示:
echo $(date -d "$BIRTHDAY" +%s)
看来您实际上正在使用 zsh 作为交互式 shell,因为它是该命令唯一可以正常工作的 shell(具有默认的 IFS 值):
date -d $BIRTHDAY +%s
无论如何,即使在 zsh 中,引用变量也是有帮助的:
date -d "$BIRTHDAY" +%s