Измените метку времени, чтобы использовать эпоху. Bash get error как дополнительный операнд

Я определяю переменную в моем скрипте 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