Учебники

Unix / Linux — механизмы цитирования оболочки

В этой главе мы подробно обсудим механизмы цитирования Shell. Мы начнем с обсуждения метасимволов.

Метасимволы

Unix Shell предоставляет различные метасимволы, которые имеют особое значение при использовании их в любом сценарии оболочки и вызывает завершение слова, если оно не заключено в кавычки.

Например ,? соответствует одному символу при перечислении файлов в каталоге, а * соответствует более чем одному символу. Вот список большинства специальных символов оболочки (также называемых метасимволами):

* ? [ ] ' " \ $ ; & ( ) | ^ < > new-line space tab

Символ может быть заключен в кавычки (т. Е. Создан для обозначения самого себя), если ему предшествует \ .

пример

В следующем примере показано, как напечатать * или a ?

Live Demo

#!/bin/sh

echo Hello; Word

После выполнения вы получите следующий результат —

Hello
./test.sh: line 2: Word: command not found

shell returned 127

Давайте теперь попробуем использовать цитируемый символ —

Live Demo

#!/bin/sh

echo Hello\; Word

После выполнения вы получите следующий результат —

Hello; Word

Знак $ является одним из метасимволов, поэтому он должен заключаться в кавычки, чтобы избежать специальной обработки оболочкой —

Live Demo

#!/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

Двойные цитаты

Попробуйте выполнить следующий сценарий оболочки. Этот сценарий оболочки использует одинарные кавычки —

Live Demo

VAR=ZARA
echo '$VAR owes <-$1500.**>; [ as of (`date +%m/%d`) ]'

После выполнения вы получите следующий результат —

$VAR owes <-$1500.**>; [ as of (`date +%m/%d`) ]

Это не то, что должно было отображаться. Очевидно, что одинарные кавычки предотвращают подстановку переменных. Если вы хотите подставить значения переменных и сделать так, чтобы кавычки работали, как и ожидалось, вам нужно будет заключить команды в двойные кавычки следующим образом:

Live Demo

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.

Live Demo

DATE=`date`

echo "Current Date: $DATE"

После выполнения вы получите следующий результат —