Встроенные переменные
Кроме переменных, которые можно определить в явном виде, для Shell существуют также встроенные переменные, сокровенный смысл которых существует только в контексте получения ее значения.
Встроенные переменные:
$1, $2, $3 ... Позиционные параметры скрипта.
$# Число позиционных параметров (десятичное).
$? Код возврата предыдущего процесса.
$$PID текущего Shell.
$! PID последнего процесса, запущенного в фоновом режиме.
$* Все позиционные параметры скрипта, передаваемые заключенными в кавычки:
"$*" - "$1 $2 $3 ..."
$@ Все позиционные параметры скрипта, передаваемые как отдельные строки, заключенные в кавычки.
$@ - "$1" "$2" "$3" ....
Поясним встроенные переменные Shell на примере.
Текст скрипта Запуск скрипта
#!/bin/sh $ ./script1.sh par1 par2 par3
echo script $0 script ./script1.sh
echo $1 $2 $3 par1 par2 par3
Здесь наблюдается полная аналогия с argv при вызове функции main() в языке С. Встроенную переменную $# используют в том случае, когда необходимо убедится в том, что скрипту было передано нужное количество параметров.
Текст скрипта:
#!/bin/sh
if [ $# -lt 3 ]; then
echo missing parameters! usage: $0 par1 par2 par3
Exit 1
fi
В данном скрипте используется условный параметр if и команда test. Интуитивно понятно, что происходит сравнение количества переданных параметров (переменная $#) и если это значение меньше 3, тогда на консоль выводится сообщение. Строка "exit 1" формирует код возврата скрипта равный единице. В OC UNIX за успешное завершение принят код возврата "0". Если код возврата не равен нулю, это означает ошибку.