В bash/sh во время выполнения скриптов доступен ряд специальных переменных. Давайте рассмотрим их.
$1-$9Это параметры командной строки. Т.е. то, что пользователь ввел через пробел после названия самого скрипта.
Например:
$ ./myscript.sh first second "third and more"
Здесь:
- $1 будет равна "first"
- $2 будет равна "second"
- $3 будет равна "third and more"
Т.к. параметров может быть больше, чем 9, то в скриптах возможно использования специальной директивы shift. Она сдвигает весь набор переменных влево на единицу.
Например, при подаче команды shift один раз наши переменные из примера выше примут такие значения:
- $1 будет равна "second"
- $2 будет равна "third and more"
- $3 - будет пустой
$0В этом переменной лежит путь и имя скрипта, который запустил пользователь.
Пример 1:
$ ./myscript.sh
$0 = "./myscript.sh"
Пример 2:
$ /usr/home/myscript.sh
$0 = "/home/user/myscript.sh"
Как видите, в $0 совсем не обязательно содержится путь к файлу скрипта.
$#Количество параметров, переданных скрипту из командной строки.
Пример:
$ ./myscript.sh param1 param2 param3
$# будет равно 3
$?Код возврата (exit code, result code), с которым завершилась предыдущая команда. Как правило, код возврата "0" означает удачное выполнение команды, а все, что отлично от нуля - различные ошибки, причем коды ошибок четко специфичны для выполняемой команды.
Пример:
#!/bin/sh
ping 192.168.0.5 -c 1 -n -W 1
res=$?
if [ "$res" -eq 0 ]; then
echo "Хост 192.168.0.5 доступен"
else
echo "Хост 192.168.0.5 куда-то потерялся"
fi
$$PID - код процесса, в котором выполняется данный скрипт.
Пример:
#!/bin/sh
pid=$$
echo $pid
Этот скрипт выведет код процесса, с которым выполняется текущий скрипт.
$!PID последнего процесса, который был запущен в фоне. Например, если Вы запускаете в фоне какой-то процесс, то Вам, возможно, хотелось-бы знать его PID.
Пример:
#!/bin/sh
./another_process &
apid=$!
echo $apid
$*Все параметры, переданные из командной строки, в одну строку.
Пример:
#!/bin/sh
echo $*
и теперь, выполнив следующий пример мы получим:
$ ./myscript.sh p1 p2 p3
p1 p2 p3
Комментарии
Оставить комментарий
Операционная система LINUX
Термины: Операционная система LINUX