Я определяю переменную в моем скрипте Bash следующим образом:
BIRTHDAY="1993-01-11 11:11 +08:00"
и преобразовать его в epoches, использовать date
затем echo
с echo $(date -d $BIRTHDAY +%s)
.
Тем не менее, я получаю сообщение об ошибке: date: extra operand '+08:00'
.
Но он работает на интерактивной оболочке bash:
➜ ~ 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)
, который тоже не работает.
Так что с ним не так?
Вам нужно процитировать "$BIRTHDAY"
, вот так:
echo $(date -d "$BIRTHDAY" +%s)
Похоже, что вы фактически используете zsh в качестве интерактивной оболочки, поскольку она единственная, в которой эта команда будет работать правильно (со значением IFS по умолчанию):
date -d $BIRTHDAY +%s
В любом случае, даже в zsh цитирование переменной полезно:
date -d "$BIRTHDAY" +%s