Если я выполняю следующую командную строку на Ubuntu:
var="$(date +"%x %r %Z")"
echo var
Я могу получить желаемый вывод. Но Если я просто работаю
date +%x %r %Z
Мне дадут ошибки:
дата: дополнительный операнд ‘%r’
Попробуйте 'дату - справка' для получения дополнительной информации.
Таким образом, чему соответствует команда даты var="$(date +"%x %r %Z")"
?Спасибо.
Вы не скопировали точно ту же команду. Вы записали date +"%x %r %Z"
в круглых скобках. Это просто работает хорошо снаружи. Иначе, date
имеет три аргумента (+%x
, %r
и %Z
), а не один (+%x %r %Z
).
От man bash
:
При использовании $ (команда) форма все символы между круглыми скобками составляют команду; ни один не рассматривают особенно.
Замены команды могут быть вложены.
Круглые скобки подобраны прежде, чем оценить содержание, таким образом, команда не разделяется как $(date +%x
, %r
, %Z)
.
Примечание:
Вы забыли $
из echo $var
.
Таким образом, что команда даты соответствует var =" $ (дата + "%x %r %Z")"?
Хорошо, как уже указано в другом ответе Вы отсутствовали для заключения в кавычки права опций, это должно быть, по крайней мере:
date +"%x %r %Z"
Это необходимо, потому что Вы используете пробелы, чтобы хранить другую информацию независимо, страница справочника для даты предлагает использовать -
, или _
, с этим Вы могли опустить заключение в кавычки всех вместе в нормальном терминале, или Вы выходите из пробелов.
Примеры:
использование '-' как делитель
date +%x-%r%Z
дает следующий вывод:
21.09.2018-11:30:15 CEST
использование '_' как делитель
date +%x_%r%Z
дает следующий вывод:
21.09.2018_11:30:15 CEST
использование вышло из пробелов как из делителя
date +%x\ %r%Z
дает следующий вывод:
21.09.2018 11:30:15 CEST
использование никаких делителей вообще
date +%x%r%Z
дает следующий вывод:
21.09.201811:30:15 CEST
Остаток для специального варианта использования. Когда Вы пытаетесь включить дату в a crontab
команда, необходимо выйти %
знак также. Таким образом, как неразделенная информация команда была бы похожа на это (Прежде чем упомянутые правила коснутся выхода все еще):
date +\%x\%r\%Z