В прошлом видео я начал рассказывать о использовании переменных в shell скриптах.
Сегодня речь пойдёт о Позиционных параметрах – Positional Parameters.
Позиционные параметры это то что вы предаёте скрипту при его вызове. Как это выглядит.
Например, у вас есть скрипт script.sh.
В этом скрипте может происходить какая-то обработка данных, но если эти данные будут записаны внутри, то для получения какого-либо результата с новыми значениями параметров описанных в теле вашего скрипта – вам придётся править сам скрипт.
Например, вы написали программу калькулятор – изначально программа не знает какие числа вы введёте, какие математические операции вы вызовите – например, сложить, умножить и тп. – всё это будут переменными которые вы будите вводить – во всяком случае вы можете написать калькулятор в котором данные параметры будут переменными.
У меня есть скрипт:
:~/mytest.dir$ nano script.sh
# This is a script about Positional Parameters.
a=$1
b=$2
c=$3
clear
echo "First parameter is a=$a"
echo "Second parameter is b=$b"
echo "Third parameter is c=$c"
echo
echo '$0'" = $0"
echo '$#'" = $#"
echo '$*'" = $*"
echo
e=$[$a+$b+$c]
echo "e= a+b+c= $e"
echo
echo "Example:"
# one small example about strings of text.
d="This is a text."
echo "d= $d"
Как я уже писал выше – позиционные параметры это то что вы указываете после имени скрипта.
Параметры разделяются пробелом.
Например, для данного скрипта если его запустить указав bash script.sh 1 5 4 , после имени скрипта я записал цифты 1,5 и 4 эти цифры будут переданы в скрипт.
При выполнении скрипта воспользоваться переданными данными можно с помощью Позиционных параметров вызывая их как $1 , $2 и так далее.
В данном скрипте я присваиваю значения Позиционных параметров переменным a,b и с.
C использованием утилиты echo я вывожу на экран содержимое моих переменных – по сути тех Позиционных параметров что я ввёл при исполнении скрипта (echo "First parameter is a=$a"
).
Далее я вывожу дополнительную информацию по Позиционным Параметрам которая может нам пригодится.
$0 – имя выполняемого скрипта – не всегда это нужно, но может пригодится при составлении логов – какая программа-скрипт что делала и тп.
$# – количество параметров переданных оболочке – пригодится при составлении скриптов с циклами – сколько раз нужно прогнать цикл и тп.
$* – совокупность всех переданных параметров, тоже полезно.
e=$[$a+$b+$c]
Далее простой пример использования принятых Позиционных параметров – их сложение. Конечно это возможно в случае если это числа.
С использованием утилиты echo выводится результат сложения переданных параметров.
d="This is a text."
И ещё небольшой пример не относящийся правда к позиционным параметрам – переменным можно давать строковые значения с пробелом в их содержимом, но для этого нужно задавать значения этих переменным в кавычках. Я об это не сказал в своём предыдущем видео.
Пример работы скрипта:
~/mytest.dir$ bash script.sh 1 5 4
First parameter is a=1
Second parameter is b=5
Third parameter is c=4
$0 = script.sh
$# = 3
$* = 1 5 4
e= a+b+c= 10
Example:
d= This is a text.
Таким образом, используя Позиционные параметры можно передавать в ваш скрипт какие-либо данные данные не меняя содержимое скрипта.
Если у вас будет необходимость посчитать что-либо сложное, с большим количеством операций, то описав все функции в скрипте и обозначив возможные переменные – можно легко продолжить вычисления с другими значениями переменных.
Можно составить скрипт обрабатывающий какие-либо файлы, например, файлы бекапов – считающий количество файлов и удаляющий все старые файлы, например, если их количество больше 5, то номера 6, 7 и так далее будут удалены. Количество, переданных параметров как я уже говорил можно узнать в процессе выполнения скрипта.
Позиционные параметры очень полезны и часто используются в скриптах, а о циклах я расскажу позже.
На сегодня всё.
Удачи!
Sources:
Shell Script, read on same line after echoing a message.
Переменные Bash не типизированы.
3
4