Основы программирования в Linux - Страница 28
1. Первым представим сценарий export2.
#!/bin/shecho "$foo"echo "$bar"2. Теперь сценарий export1. В конце сценария запускается export2.
#!/bin/shfoo="The first meta-syntactic variable"export bar="The second meta-syntactic variable"export2Если вы запустите их, то получите следующий результат.
$ ./export1The second meta-syntactic variable$Как это работает
Сценарий export2 просто выводит значения двух переменных. В сценарии export1 задаются значения обеих переменных, но только переменная bar помечается как экспортируемая, поэтому, когда впоследствии запускается сценарий export2, значение переменной
foobar$foonullПосле того как переменная была экспортирована из командной оболочки, она экспортируется в любые сценарии, запускаемые из этой оболочки, и в любые командные оболочки, которые в свою очередь запускают эти сценарии, и т.д. Если бы сценарий export2 вызвал другой сценарий, в нем переменная
barКоманды
set -аset -allexportКоманда
exprх=`expr $x + 1`Символы
``хexpr $х + 1$( )х=$(expr $х + 1)Команда expr обладает большими возможностями, с ее помощью можно вычислять различные выражения. Основные виды вычислений перечислены в табл. 2.6.
Таблица 2.6
| Вычисление выражения | Описания |
|---|---|
Выражение1 | Выражение2 | Выражение1Выражение1Выражение2 |
Выражение1 & Выражение2 | Нуль, если оба выражения равны нулю, в противном случае Выражение1 |
Выражение1 = Выражение2 | Равенство |
Выражение1 > Выражение2 | Больше чем |
Выражение1 >= Выражение2 | Больше или равно |
Выражение1 < Выражение2 | Меньше чем |
Выражение1 <= Выражение2 | Меньше или равно |
Выражение1 != Выражение2 | Неравенство |
Выражение1 + Выражение2 | Сложение |
Выражение1 — Выражение2 | Вычитание |
Выражение1 * Выражение2 | Умножение |
Выражение1 / Выражение2 | Деление нацело |
Выражение1 % Выражение2 | Остаток от деления нацело |
В современных сценариях вместо команды
expr$((...))Команда
printfechoУ команды следующая синтаксическая запись.
printf "строка формата" параметр1 параметр2 ...Строка формата очень похожа с некоторыми ограничениями на применяемую в языках программирования С и С++. Главным образом не поддерживаются числа с плавающей точкой, поскольку все арифметические операции в командной оболочке выполняются над целыми числами. Строка формата состоит из произвольной комбинации литеральных символов, escape-последовательностей и спецификаторов преобразования. Все символы строки формата, отличающиеся от
%В табл. 2.7 приведены поддерживаемые командой escape-последовательности.
Таблица 2.7
| Escape-последовательность | Описание |
|---|---|
" | Двойная кавычка |
\ | Символ обратный слэш |
a | Звуковой сигнал тревоги (звонок колокольчика или прерывистый звуковой сигнал) |
b | Символ Backspace (стирание слева) |
c | Отбрасывание последующего вывода |
f | Символ Form feed (подача бумаги) |
n | Символ перехода на новую строку |
r | Возврат каретки |
t | Символ табуляции |
v | Символ вертикальной табуляции |
ooo | Один символ с восьмеричным значением ooo |
xHH | Один символ с шестнадцатеричным значением HH |