Что командная строка даты соответствует var = “$ (дата +” %x %r %Z “)”

Если я выполняю следующую командную строку на Ubuntu:

var="$(date +"%x %r %Z")"
echo var

Я могу получить желаемый вывод. Но Если я просто работаю

date +%x %r %Z

Мне дадут ошибки:

дата: дополнительный операнд ‘%r’

Попробуйте 'дату - справка' для получения дополнительной информации.

Таким образом, чему соответствует команда даты var="$(date +"%x %r %Z")"?Спасибо.

1
задан 21 September 2018 в 08:10

2 ответа

Вы не скопировали точно ту же команду. Вы записали date +"%x %r %Z" в круглых скобках. Это просто работает хорошо снаружи. Иначе, date имеет три аргумента (+%x, %r и %Z), а не один (+%x %r %Z).

От man bash :

При использовании $ (команда) форма все символы между круглыми скобками составляют команду; ни один не рассматривают особенно.
Замены команды могут быть вложены.

Круглые скобки подобраны прежде, чем оценить содержание, таким образом, команда не разделяется как $(date +%x, %r, %Z) .

Примечание:
Вы забыли $ из echo $var.

4
ответ дан 3 December 2019 в 06:37

Таким образом, что команда даты соответствует 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
1
ответ дан 3 December 2019 в 06:37

Другие вопросы по тегам:

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