В этой главе мы подробно обсудим механизмы цитирования Shell. Мы начнем с обсуждения метасимволов.
Метасимволы
Unix Shell предоставляет различные метасимволы, которые имеют особое значение при использовании их в любом сценарии оболочки и вызывает завершение слова, если оно не заключено в кавычки.
Например ,? соответствует одному символу при перечислении файлов в каталоге, а * соответствует более чем одному символу. Вот список большинства специальных символов оболочки (также называемых метасимволами):
* ? [ ] ' " \ $ ; & ( ) | ^ < > new-line space tab
Символ может быть заключен в кавычки (т. Е. Создан для обозначения самого себя), если ему предшествует \ .
пример
В следующем примере показано, как напечатать * или a ? —
#!/bin/sh echo Hello; Word
После выполнения вы получите следующий результат —
Hello ./test.sh: line 2: Word: command not found shell returned 127
Давайте теперь попробуем использовать цитируемый символ —
#!/bin/sh echo Hello\; Word
После выполнения вы получите следующий результат —
Hello; Word
Знак $ является одним из метасимволов, поэтому он должен заключаться в кавычки, чтобы избежать специальной обработки оболочкой —
#!/bin/sh echo "I have \$1200"
После выполнения вы получите следующий результат —
I have $1200
В следующей таблице перечислены четыре формы цитирования —
Sr.No. | Цитирование и описание |
---|---|
1 |
Одинарные цитаты Все специальные символы между этими кавычками теряют свое особое значение. |
2 |
Двойная цитата Большинство специальных символов между этими кавычками теряют свое особое значение с этими исключениями —
|
3 |
бэкслэш Любой персонаж, следующий сразу за обратной косой чертой, теряет свое особое значение. |
4 |
Вернуться цитата Все, что находится между обратными кавычками, будет рассматриваться как команда и будет выполнено. |
Одинарные цитаты
Все специальные символы между этими кавычками теряют свое особое значение.
Двойная цитата
Большинство специальных символов между этими кавычками теряют свое особое значение с этими исключениями —
бэкслэш
Любой персонаж, следующий сразу за обратной косой чертой, теряет свое особое значение.
Вернуться цитата
Все, что находится между обратными кавычками, будет рассматриваться как команда и будет выполнено.
Одиночные цитаты
Рассмотрим команду echo, которая содержит много специальных символов оболочки —
echo <-$1500.**>; (update?) [y|n]
Размещение обратной косой черты перед каждым специальным символом утомительно и затрудняет чтение строки —
echo \<-\$1500.\*\*\>\; \(update\?\) \[y\|n\]
Существует простой способ процитировать большую группу символов. Поставьте одинарные кавычки (‘) в начале и в конце строки —
echo '<-$1500.**>; (update?) [y|n]'
Символы в одинарных кавычках заключаются в кавычки так, как будто перед каждым символом стоит обратная косая черта. При этом команда echo отображается правильно.
Если в строке для вывода отображается одинарная кавычка, вам не следует помещать всю строку в одинарные кавычки, вместо этого следует использовать обратную косую черту (\) следующим образом:
echo 'It\'s Shell Programming
Двойные цитаты
Попробуйте выполнить следующий сценарий оболочки. Этот сценарий оболочки использует одинарные кавычки —
VAR=ZARA echo '$VAR owes <-$1500.**>; [ as of (`date +%m/%d`) ]'
После выполнения вы получите следующий результат —
$VAR owes <-$1500.**>; [ as of (`date +%m/%d`) ]
Это не то, что должно было отображаться. Очевидно, что одинарные кавычки предотвращают подстановку переменных. Если вы хотите подставить значения переменных и сделать так, чтобы кавычки работали, как и ожидалось, вам нужно будет заключить команды в двойные кавычки следующим образом:
VAR=ZARA echo "$VAR owes <-\$1500.**>; [ as of (`date +%m/%d`) ]"
После выполнения вы получите следующий результат —
ZARA owes <-$1500.**>; [ as of (07/02) ]
Двойные кавычки убирают специальное значение всех символов, кроме следующих:
-
$ для замены параметров
-
Обратные кавычки для подстановки команд
-
\ $, чтобы включить буквальные знаки доллара
-
\ ` включить буквальные обратные кавычки
-
\ « чтобы включить встроенные двойные кавычки
-
\\ включить встроенную обратную косую черту
-
Все остальные символы \ являются буквальными (не специальными)
$ для замены параметров
Обратные кавычки для подстановки команд
\ $, чтобы включить буквальные знаки доллара
\ ` включить буквальные обратные кавычки
\ « чтобы включить встроенные двойные кавычки
\\ включить встроенную обратную косую черту
Все остальные символы \ являются буквальными (не специальными)
Символы в одинарных кавычках заключаются в кавычки так, как будто перед каждым символом стоит обратная косая черта. Это помогает правильно отображать команду echo.
Если в строке для вывода отображается одинарная кавычка, вам не следует помещать всю строку в одинарные кавычки, вместо этого следует использовать обратную косую черту (\) следующим образом:
echo 'It\'s Shell Programming'
Обратные цитаты
Помещение любой команды Shell между обратными кавычками приводит к выполнению команды.
Синтаксис
Вот простой синтаксис для помещения любой команды Shell между обратными кавычками —
var=`command`
пример
Команда date выполняется в следующем примере, а полученный результат сохраняется в переменной DATA.
DATE=`date` echo "Current Date: $DATE"
После выполнения вы получите следующий результат —