ошибка при прохождении Переменная к команде Date в скрипте оболочки

Как вы обнаружили, ! не запускает расширение истории внутри одинарных кавычек.

Вы можете использовать printf со строкой формата, содержащей ! символов в одинарных кавычках. Например:

$ name="boda"
$ printf 'hello! my name is %s! bye!\n' "$name"
hello! my name is boda! bye!

или

$ name="boda"
$ var=$(printf 'hello! my name is %s! bye!\n' "$name")
$ echo "$var"
hello! my name is boda! bye!
1
13.09.2018, 18:06
2 ответа

Если вы поместите переменную в одну строку -в кавычках, оболочка не расширит эту переменную. Попробуйте:

$ TZ=GMT date --date "${RequestDate}" "+%Y-%m-%d %H:%M:%S"
2
27.01.2020, 23:23

В оболочке есть разные виды кавычек и разные возможные решения. Другой ответ правильный, значения в одинарных кавычках не расширяются. Но вы хотите, чтобы TZ была частью аргумента, и вы хотите, чтобы аргумент содержал кавычки. Вы можете добиться этого, добавив часть в одинарные кавычки и часть в двойные кавычки без разделителя.

date --date='TZ="GMT" '"${RequestDate}" "+%Y-%m-%d %H:%M:%S"

Вы также можете использовать обратную косую черту

date --date="TZ=\"GMT\" ${RequestDate}" "+%Y-%m-%d %H:%M:%S"
1
27.01.2020, 23:23

Теги

Похожие вопросы