Применение одинарных кавычек во многом аналогично применению двойных кавычек. Интерпретатор shell получает указание не выполнять подстановку этих значений; другими словами, символы, заключенные в такие кавычки, лишены специального значения. То, что заключено в одинарные кавычки, воспринимается буквально. Рассмотрим пример, аналогичный примеру с двойными кавычками:
$ GIRL='girl'
$ echo "The '$GIRL' did well"
The 'girl' did well
15.4. Обратные кавычки
Обратные кавычки позволяют присваивать переменным данные вывода системных команд. Символы, заключенные в обратные кавычки, воспринимаются интерпретатором shell как системная команда, которую следует выполнить. С помощью этого метода можно осуществить подстановку данных вывода в переменную. Можно также комбинировать разные кавычки, как это показано далее.
В следующем примере интерпретатор shell пытается выполнить подстановку слова hello. Но, поскольку нет ни команды, ни сценария с таким именем, отображается сообщение об ошибке.
$ echo `hello`
sh: hello: command not found
Применим снова команду date.
$ echo `date`
Sun May 16 16:40:19 GMT 1999
Теперь команда записана правильно, и интерпретатор shell может выполнить корректную подстановку этой команды.
Присвоим переменной mydate данные вывода команды date. Ниже приводится формат команды date:
$ date +%A" the "%e" of "%B" "%Y
Sunday the 16 of May 1999
Присвоим значение переменной mydate и отобразим его.
$ mydate=`date +%A" the "%e" of "%В" "%Y`
$ echo $mydate
Sunday the 16 of May 1399
Конечно, переменной mydate можно присвоить весь вывод команды date:
$ mydate=`date`
$ echo $mydate
Sun May 16 16:48:16 GMT 1999
Ниже приводится другой пример. Обратные кавычки содержатся внутри двойных кавычек:
$ echo "The date today ls `date` "
The date today ls Sun May 16 16:56:53 GMT 1999
Выведем на экран небольшое сообщение, включающее сведения о количестве пользователей в системе.
$ echo "There are `who | wc -l` users on the system"
There are 13 users on the system
В приведенном примере выводится текстовая строка. Интерпретатор shell воспринимает обратные кавычки, рассматривает текст, который заключен в обратные кавычки, интерпретирует его и выполняет.
15.5. Обратная косая черта
Символ обратной косой черты указывает интерпретатору shell, что следующий за ним символ не имеет специального значения. Специальное значение могут иметь такие символы: & *=^ $ ` " | ?.
В результате применения команды echo вместе с символом * на экран выводится не символ звездочки, а листинг. В этот листинг включается текущий каталог.
$ echo *
conf.linuxconf conf.modules cron.daily cron.hourly cron.monthly cron.weekly crontab csh.cshrc default dosemu.conf dosemu.users exports fdprm fstab gettydefs gpm‑root.c onf group group- host.conf hosts hosts.allow hosts.deny httpd inetd
Для отмены специального значения звездочки, примените символ обратной косой черты:
$ echo \*
*
Аналогичный результат можно получить с помощью команды $$. Интерпретатор shell воспринимает ее как текущий PID (ID процесса). Чтобы отключить специальное значение и вывести на экран символ $$, нужно перед этим символом поместить символ обратной косой черты:
$ echo $$
284
$ echo \$$
$$
Для вывода на экран символов, заданных восьмеричными ASCII–кодами, перед ними следует размещать символ обратной косой черты. В противном случае интерпретатор shell воспримет их как обычные числа.
$ echo "This ls a copyright 251 sign"
This is a copyright \251 sign"
$ echo "This is a copyright \251 sign"
This ls a copyright © sign"
В Linux…
He забывайте при выводе управляющих символов указывать параметр " -e".
$ echo -e "This ls a copyright \251 sign"
This ls a copyright © sign
Если при использовании команды expr применить символ * для обозначения операции умножения, то отобразится сообщение об ошибке. Чтобы символ * обозначал операцию умножения, следует поместить перед ним символ обратной косой черты.
$ expr 12 * 12
expr; syntax error
$ expr 12 \* 12
144