将时间戳更改为纪元使用 Bash 获取错误,例如额外的操作数

将时间戳更改为纪元使用 Bash 获取错误,例如额外的操作数

我在 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

相关内容