If-условные переходы:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
В файле iftst с помощью if-запроса мы проверяем, были ли переданы два параметра. Если этого не произошло, выводится сообщение об ошибке. Программа завершается командой exit с возвращаемым значением, неравным нулю (индикатор ошибок). В противном случае содержимое обоих параметров выводится на экран. Критерием для условного перехода является возвращаемое значение последней команды перед then. Если эта команда возвращает значение 0, то условие выполняется. Если then указывается в той же строке, что и предыдущая команда (без перехода на следующую), то команда должна завершаться точкой с запятой. Условие может быть создано с помощью команды test оболочки bash. При этом оператор -ne означает «не равно» (not equal). Команда test применяется всякий раз, когда необходимо сравнить друг с другом две последовательности символов или два числа, когда необходимо проверить, существует ли файл, и т. д. Вместо test может использоваться краткий вариант в квадратных скобках. При этом перед названием команды [ и после него ] нужно ставить пробел. Кроме того, из структуры if можно вычленить вторую команду echo, так как из-за наличия команд exit все строки кода, следующие за fi, будут выполняться только после того, как будет реализовано условие. |
Пример скрипта iftst_v0:
1 2 3 4 5 6 7 8 |
#! /bin/sh # Пример iftst_v0 if test $# -ne 2; then echo "Команде должно быть передано ровно два параметра!" exit 1 else echo "Параметр 1: $1. Параметр 2: $2" fi |
ВНИМАНИЕ:
1 2 3 4 5 |
Обратите внимание, что значение истинности (true) в bash равно 0, а ложности (false) — не равно 0. В большинстве других языков программирования значения прямо противоположны! Команды, завершаемые без ошибок, возвращают значение 0. Любое значение, не равное 0, указывает на ошибку. Некоторые команды возвращают различные значения в зависимости от типа ошибки. |
Пример скрипта iftst_v1:
1 2 3 4 5 6 7 |
#! /bin/sh # Пример iftst_v1 if [ $# -ne 2 ]; then echo " Команде должно быть передано ровно два параметра!" exit 1 fi echo "Параметр 1: $1, Параметр 2: $2" |