Если кавычки ограничивают строку, то все спецсимволы внутри не будут интерпретированы:
результат будет :
Usage: grep [OPTION]… PATTERN [FILE]…
Try `grep —help’ for more information.
Для того, что бы выполнить данную команду воспользуемся двойными скобками:
9260 ? S 0:00 tlsmgr -l -t unix -u 25874 pts/6 S+ 0:00 grep -t unix
Очень важно запомнить, что одинарные кавычки(‘ ‘) и двойные кавычки(» «) отличаются лишь тем, что двойные не интерпретируют символ $, то есть вы можете использовать переменные в своей строке. Двойные кавычки могут быть использованы для предотвращения разбиения строки на слова. Заключенные в кавычки слова будут восприниматься как один параметр:
VAR="A B C D" echo $VAR
На выходе получим:
A B C D
То есть команда echo вывела 4 отдельных элемента. Для того, что бы наша переменная выводилась как один элемент, необходимо использовать кавычки:
VAR="A B C D" echo "$VAR"
На выходе получим:
A B C D
Но, что же делать если вам необходимо вывести кавычки или какой-то другой спец символ? Все очень просто, можно воспользоваться экранированием. Символ экранирования — \. Предположим что нам необходимо вывести на экран — «deffered» mail in [/var/spool/deffered] «bounced» mail in [/var/spool/bounced]. Если вы сделаете вот так:
VAR="deffered" mail in /var/spool/deffered "bounced" mail in /var/spool/bounced echo $VAR
То переменной VAR будет назначено значение deffered, а затем скрипт попытается запустить команду mail. Для того, что бы у нас вся эта строкак была одним параметром, она должна выглядеть так:
VAR="\"deffered\" mail in /var/spool/deffered \"bounced\" mail in /var/spool/bounced" echo $VAR
и результатом будет:
В таких командах как echo и sed есть несколько специальных экранированных символов:
\n перевод строки (новая строка) \r перевод каретки \t табуляция \v вертикальная табуляция \b забой (backspace) \a "звонок" (сигнал) \0xx ASCII-символ с кодом 0xx в восьмеричном виде)
Несколько примеров с командой echo. Для того, что бы экранированные спец символы работали, вам необходимо запускать команду echo с параметром -e или вы можете использовать такую конструкцию — $’/X’, как это работает вы сейчас уведите в примере:
#!/bin/bash # VAR="+++ +++" echo "\\n" echo -e "$VAR\n$VAR" echo echo "\\t\\t" echo -e "$VAR\t\t$VAR" echo echo "\\v\\v" echo -e "$VAR\v\v$VAR" echo echo "\\n" echo "$VAR"$'\n'"$VAR"
Результат будет:
\n +++ +++ +++ +++ \t\t +++ +++ +++ +++ \v\v +++ +++ +++ +++ \n +++ +++ +++ +++
Если строка сценария заканчивается символом создания конвейера |, то необходимость в применении символа \, для экранирования перевода строки, отпадает. Тем не менее, считается хорошим тоном, всегда использовать символ «\» в конце промежуточных строк многострочных команд.
Арефметические операторы
Формат арифметического выражения выглядит так:
Список операторов:
Operator Meaning VAR++ and VAR-- переменная пост-инкремент и пост-декремент ++VAR and --VAR переменная преинкремента и предекремента - and + унарные минус и плюс ! and ~ логические и побитового отрицание ** возведение в степень *, / and % умножение, деление, остаток + and - сложения, вычитания << and >> левый и правый побитовый сдвиг <=, >=, < and > операторы сравнения == and != равенство и неравенство & побитовое И ^ побитовое исключающее ИЛИ | побитовое ИЛИ && логическое И || логическое ИЛИ expr ? expr : expr условная оценка =, *=, /=, %=, +=, -=, <<=, >>=, &=, ^= and |= назначение , разделитель между выражениями
Небольшой пример:
#!/bin/bash # A=5 B=4 C=1 let C++ D=$(( $A+$B )) echo $C echo $D
Результатом будет:
D = 9
Часть 1: скрипт Hellow World
Часть 2: Переменные
Часть 3: Специальные параметры
Часть 4: Одинарные и двойные кавычки. Математические операции
Часть 5: Структурные конструкции и команда test
Часть 6: Структура If…then…else
Часть 7: Подмножества и части строк. Размеры
Вася says:
спасибо