exit 0
fi
exit 1
Если вы любитель острых ощущений или, как минимум, лаконичных сценариев, можете переписать сценарий в виде одной строки, используя комбинацию И-списка и ИЛИ-списка, описанных ранее:
[ -f .profile ] && exit 0 || exit 1
Команда export
делает переменную, называемую ее параметром, доступной в подоболочках. По умолчанию переменные, созданные в командной оболочке, не доступны в новых дочерних подоболочках, запускаемых из данной. Команда export
создает из своего параметра переменную окружения, которая видна другим сценариям и программам, запускаемым из текущей программы. Говоря профессиональным языком, экспортируемые переменные формируют переменные окружения в любых дочерних процессах, порожденных командной оболочкой. Лучше всего проиллюстрировать это примером из двух сценариев: export1
и export2
(упражнение 2.14).
1. Первым представим сценарий export2.
#!/bin/sh
echo "$foo"
echo "$bar"
2. Теперь сценарий export1. В конце сценария запускается export2.
#!/bin/sh
foo="The first meta-syntactic variable"
export bar="The second meta-syntactic variable"
export2
Если вы запустите их, то получите следующий результат.
$ ./export1
The second meta-syntactic variable
$
Как это работает
Сценарий export2 просто выводит значения двух переменных. В сценарии export1 задаются значения обеих переменных, но только переменная bar помечается как экспортируемая, поэтому, когда впоследствии запускается сценарий export2, значение переменной foo
потеряно, а значение переменной bar
экспортировано во второй сценарий. На экране появляется пустая строка, поскольку $foo
ничего не содержит и вывод переменной со значением null
приводит к отображению новой строки.
После того как переменная была экспортирована из командной оболочки, она экспортируется в любые сценарии, запускаемые из этой оболочки, и в любые командные оболочки, которые в свою очередь запускают эти сценарии, и т.д. Если бы сценарий export2 вызвал другой сценарий, в нем переменная bar
также была бы доступна.
Команды set -а
или set -allexport
экспортируют все переменные соответственно.
Команда expr
вычисляет выражение, составленное из ее аргументов. Чаще всего она применяется для подсчета простых арифметических выражений в следующем виде:
х=`expr $x + 1`
Символы ``
(обратная кавычка или обратный апостроф) заставляют переменную х
принять результат выполнения команды expr $х + 1
. Ее можно также записать с помощью синтаксической конструкции $( )
вместо обратной кавычки, например, следующим образом:
х=$(expr $х + 1)
Команда expr обладает большими возможностями, с ее помощью можно вычислять различные выражения. Основные виды вычислений перечислены в табл. 2.6.
Вычисление выражения | Описания |
---|---|
| , еслиВыражение1 Выражение2 |
| Нуль, если оба выражения равны нулю, в противном случаеВыражение1 |
| Равенство |
| Больше чем |
| Больше или равно |
| Меньше чем |
| Меньше или равно |
| Неравенство |
| Сложение |
| Вычитание |
| Умножение |
| Деление нацело |
| Остаток от деления нацело |
В современных сценариях вместо команды expr
обычно применяется более эффективная синтаксическая конструкция $((...))
, которая будет описана далее в этой главе.
Команда printf
есть только в современных командных оболочках. Группа X/Open полагает, что ее следует применять вместо команды echo
для генерации форматированного вывода, несмотря на то, что, кажется, лишь немногие следуют этому совету.
У команды следующая синтаксическая запись.
printf