Bash учебное пособие. Часть 3: Специальные параметры

Специальные параметры, те параметры которые уже установлены и доступны для пользователя. Эти параметры невозможно назначить внутри скрипта. Список таких параметров:

$1 — $9 — Это так называемые позиционные параметры, служат для передачи аргументов командной строки.
Если аргументов больше 9, то они должны заключаться в фигурные скобки{}
$0 — Имя скрипта который был запущен.
$# — Количество аргументов командной строки или позиционных параметров
$? — Код с которым была завершена предыдущая команда. Если команда была выполнена удачно,
то значение этой переменной будет 0, если же неудачно то не 0.
$$ — Номер процесса под которым исполняется данный скрипт, очень удобно использовать
в имени файла что бы сделать его уникальным.
$! — Номер последнего, запущенного в фоне процесса.
$- Список флагов переданных сценарию. Годиться разве что для проверки интерактивного режима.
$* — Данный параметр содержит в себе все параметры переданные из командной строки.
$@ — То же самое что $*, только каждый параметр представлен отдельно.
$_ — Специальная переменная, содержит последний аргумент предыдущей команды.

И так начнем мы с $1-$9.

Создадим script.sh с таким содержимым:

#!/bin/bash
#
POS1="$1"
POS2="$2"
POS3="$3"
echo "$1 первый параметр, \$1."
echo "$2 второй параметр, \$2."
echo "$3 третий параметр, \$3."
echo
echo "$POS1, $POS2, $POS3 параметры" '$1'"," '$2'"," '$3'","

Запускам script.sh с параметрами a v b:

./script.sh a v b

На экране мы увидим:

a первый параметр, $1.
v второй параметр, $2.
b третий параметр, $3.

a, v, b параметры $1, $2, $3,

Специальный параметр $0

Создадим script.sh с таким содержимым:

#!/bin/bash
#
echo "Имя сценария: $0"

Запукаем и получим:

script.sh

Специальный параметр $#

Создадим script.sh с таким содержимым:

#!/bin/bash
#
POS1="$1"
POS2="$2"
POS3="$3"
echo "$1 первый параметр, \$1."
echo "$2 второй параметр, \$2."
echo "$3 третий параметр, \$3."
echo
echo "Всего параметров: $#"

Запускам script.sh с параметрами a v b:

./script.sh a v b

И получим :

a первый параметр, $1.
v второй параметр, $2.
b третий параметр, $3.
Всего параметров: 3

Специальный параметр $$

Создадим script.sh с таким содержимым:

#!/bin/bash
#
TEMFILE=tmp.$$
touch $TEMFILE
ls -1 tmp.* 

Запускаем скрипт и получаем:

tmp.20375

где 20375 уникальный номер процесса.

Специальный параметр $!

Создадим script.sh с таким содержимым:

#!/bin/bash
#
COM="ps ax"
echo "Вывод на экран номера процессов запущенных команд"
echo
echo -n "Номер процесса ""$COM"":  "
${COM} &
echo $!

Результатом будет:

Номер процесса ps ax: 20478

Специальный параметр $*

Создадим script.sh с таким содержимым:

#!/bin/bash
#
POS1="$1"
POS2="$2"
POS3="$3"
echo "$POS1 первый параметр, \$1."
echo "$POS2 второй параметр, \$2."
echo "$POS3 третий параметр, \$3."
echo
echo "Все параметры одной строкой: $*"

Запускам script.sh с параметрами a v b:

./script.sh a v b

Результатом будет:

a первый параметр, $1.
v второй параметр, $2.
b третий параметр, $3.

Все параметры одной строкой: a v b

Специальный параметр $@

Создадим script.sh с таким содержимым:

#!/bin/bash
#
N=1
for ARG in "$@"
do
echo "Входной параметр #$N = $ARG"
N=$[$N+1]
done

Запускаем его:

./script.sh a v b

Результатом будет:

Входной параметр #1 = a
Входной параметр #2 = v
Входной параметр #3 = b

Специальный параметр $?

При помощи данного параметра очень удобно проверить результат выполнения какой либо команды. Пример:

#!/bin/bash
#
PORT=$1
netstat -ln|grep "$PORT" &> /dev/null
if [ $? -eq 0 ]; then
echo "$PORT поднят. "'$?'"=$?"
else
echo "$PORT не поднят. "'$?'"=$?"
fi

Запускаем его:

./script.sh :80

И если Apache поднят на локальном компьютере, то мы увидим:

:80 поднят. $?=0

Давайте попробуем задать какой то порт, который не слушает ни одна программа:

./script.sh :60000

Результат будет:

:60000 не поднят. $?=1

Специальный параметр $_

Создадим script.sh с таким содержимым:

#!/bin/bash
#
netstat -ln &> /dev/null
echo $_

Запускаем сценарий, и результатом будет:

-ln

Часть 1: скрипт Hellow World
Часть 2: Переменные
Часть 3: Специальные параметры
Часть 4: Одинарные и двойные кавычки. Математические операции
Часть 5: Структурные конструкции и команда test
Часть 6: Структура If…then…else
Часть 7: Подмножества и части строк. Размеры

Случайные Статьи

Loading…


Количество просмотров :43070

Оставьте коментарий