не могу понять, что не так с: $ echo '`date`'

не могу понять, что не так с: $ echo '`date`'

Что происходит при выполнении следующей команды? Объясните, почему и как это исправить:

$ 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строку.

Связанный контент