![не могу понять, что не так с: $ echo '`date`'](https://rvso.com/image/109235/%D0%BD%D0%B5%20%D0%BC%D0%BE%D0%B3%D1%83%20%D0%BF%D0%BE%D0%BD%D1%8F%D1%82%D1%8C%2C%20%D1%87%D1%82%D0%BE%20%D0%BD%D0%B5%20%D1%82%D0%B0%D0%BA%20%D1%81%3A%20%24%20echo%20'%60date%60'.png)
Что происходит при выполнении следующей команды? Объясните, почему и как это исправить:
$ 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
строку.