Встроенные переменные

 

 

Кроме переменных, которые можно определить в явном виде, для 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". Если код возврата не равен нулю, это означает ошибку.