вторник, 30 июля 2013 г.

Кавычки в Unix

Кавычки, обрамляющие строку, предотвращают интерпретацию специальных символов, которые могут находиться в строке.
Символ называется "специальным", если он не только означает самого себя но и имеет дополнительное значение для программ, например символ шаблона -- *.

Двойные кавычки отменяют все спец символы, кроме $ и \.

Одиночные кавычки (' '), по своему действию схожи с двойными кавычками, но не разрешают внутри себя подстановку переменных, интерпретируя символ "$", как обычный символ. Любой символ внутри одинарных кавычек, за исключением символа одинарной кавычки, воспринимается как обычный символ.
Одинарные кавычки являются более строгим вариантом двойных кавычек.

Многие программы в передаваемых им параметрах, используют специальные символы, в этом случае нужно заключать их в кавычки, что-бы системная оболочка их не трогала, оставляя для вызываемой программы.
grep '[Tt]*' ./[Bb]*

Кроме вышесказанного, кавычки используются для предотвращения разбиения строки на слова:
var="is a variable"

echo this $var # здесь команде передается  4 аргумента

echo "this $var"  # а тут один
this is a variable # здесь на выходе мы получаем 4 слова
this is a variable # а здесь одну строку

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


# ls /etc\ /root
вернет /etc/root

Очень часто символ экранирования \ ( обратный слэш ), используется для ввода из командной строки многострочных команд, экранируя символ новой строки:
# ls /etc\\n/root
вернет /etc/root

Вообще если одна из строк многострочной команды заканчивается символом конвейера " | ", экранировать символ новой строки не обязательно, это просто считается хорошим тоном, и применимо только к оболочке bash

Комментариев нет:

Отправить комментарий