Intereting Posts
Почему драйвер HD HD Graphics называется i915? Почему я должен использовать «sudo», когда нахожусь в группе суперпользователей? Почему команда shuf file> file оставляет пустой файл, но аналогичных команд нет? Можно ли ускорить мой Linux Clock? Как запустить приложение в полноэкранном режиме без загрузки среды рабочего стола IceWM? Окончание Bash -C vs -F Linux Mint переходит в аварийный режим wget на лету, чтобы извлечь определенную информацию из файла, не загружая весь файл rsync: продолжить или в произвольном порядке Как переходить на виртуальный IP-адрес в качестве шлюза Почему программированию на C не нужны сценарии компилятора и оболочки? Пароль – зашифрован, а пароль –md5 одинаковый для конфигурационного файла GRUB? SonicWall NetExtender висит на подключении к туннелю Системная переменная среды обрезается Нужна помощь с скриптом для проверки использования памяти

Измените метку времени, чтобы использовать эпоху. 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