
Что происходит при выполнении следующей команды? Объясните, почему и как это исправить:
$ echo ‘`date`’
решение1
Я предполагаю, что ты бежишь
echo '`date`'
(обратите внимание на прямые одинарные кавычки) и ожидая увидеть date
вывод . Оболочка никогда не расширяет строки внутри одинарных кавычек; вместо этого следует использовать двойные кавычки:
echo "`date`"
или просто бросьте их
echo `date`
Все это эквивалентно
date
хотя, помимо расщепления оболочки и глобализации (как указаноСтефан Шазелас), который по умолчанию сворачивает пробелы.
решение2
Как опубликовано, внешние кавычки — это символы Unicode U+2018 и U+2019. Это НЕ обычные одинарные кавычки, они не имеют особого значения для оболочки и просто отображаются:
$ echo ‘`date`’
‘Fri Apr 7 19:55:15 EEST 2017’
$
Внутри этих кавычек находятся обратные кавычки для подстановки команд оболочки. date
Команда выполняется, а захваченный вывод заменяет date
строку.