Предыдущий урок: bash скрипты для начинающих — урок №10: Функции.
Мы уже умеем работать с переменными и значениями внутри скрипта, но что если нам нужно передать значение извне. Это делается при помощи аргументов. Вы наверняка сталкивались с аргументами — это значения, которые перечисляются после имени скрипта.
Зачем нужны аргументы?
Обеспечение гибкости и универсальности: Вместо того чтобы переписывать один и тот же скрипт для разных ситуаций, можно передавать разные аргументы, чтобы скрипт выполнял разные действия или обрабатывал разные данные.
Передача пользовательских данных: Аргументы позволяют передать в скрипт или функцию параметры, такие как имена файлов, числа, строки или опции.
Упрощение автоматизации: Скрипты могут обрабатывать разные входные данные без необходимости изменять сам код — достаточно передать нужные аргументы при запуске.
Как передать аргументы скрипту
Создадим новый файл для сегодняшнего урока:
[root@waky bash_practice]# touch script_11.sh
[root@waky bash_practice]# chmod +x script_11.sh
[root@waky bash_practice]#
Шаг 1: Передаем аргументы без проверки
Заполним файл script_11.sh следующим содержанием:
#!/bin/bash
echo "Your argument is: $1"
Да, этого кода достаточно, чтобы продемонстрировать работу аргументов в ее тривиальном виде. Запустим скрипт, только через пробел от имени скрипта укажем любое значение — букву, цифру, слово — неважно:
[root@waky bash_practice]# ./script_11.sh test
Your argument is: test
[root@waky bash_practice]#
Если мы хотим принять несколько аргументов, достаточно просто прописать их порядковые номера в скрипте:
#!/bin/bash
first_arg=$1
second_arg=$2
third_arg=$3
echo "Your first argument is: $first_arg"
echo "Your second argument is: $second_arg"
echo "Your third argument is: $third_arg"
Попробуем ввести аргументов меньше, чем требуется:
[root@waky bash_practice]# ./script_11.sh Holmes Watson
Your first argument is: Holmes
Your second argument is: Watson
Your third argument is:
[root@waky bash_practice]#
Или больше:
[root@waky bash_practice]# ./script_11.sh Athos Porthos Aramis DArtagnan
Your first argument is: Athos
Your second argument is: Porthos
Your third argument is: Aramis
[root@waky bash_practice]#
Как видим, скрипт будет работать в любом случае, только в первом случае у него будет отсутствовать одно значение, а во втором случае будут отброшены все аргументы сверх необходимых.
Шаг 2: Проверяем аргументы
Наличие и количество аргументов может не быть критичным, если в вашем скрипте предусмотрены значения по умолчанию на случай отсутствия аргумента. В противном случае, стоит убедиться, что скрипт получит ровно столько аргументов, сколько требуется.
Поправим наш скрипт следующим образом:
#!/bin/bash
if [ $# -ne 3 ]; then
echo "The script requeres exactly 3 arguments."
echo "But you provided $#"
exit 1
else
first_arg=$1
second_arg=$2
third_arg=$3
fi
echo "Your first argument is: $first_arg"
echo "Your second argument is: $second_arg"
echo "Your third argument is: $third_arg"
Перезапустим скрипт и проверим результат:
[root@waky bash_practice]# ./script_11.sh Athos Porthos Aramis DArtagnan
The script requeres exactly 3 arguments.
But you provided 4
[root@waky bash_practice]#
$# — обозначает количество аргументов, и если их число не равно 3, скрипт выводит предупреждение и возвращает код выхода с ошибкой (exit 1).
Если мы дадим правильное количество аргументов, скрипт отработает, как положено:
[root@waky bash_practice]# ./script_11.sh Athos Porthos Aramis
Your first argument is: Athos
Your second argument is: Porthos
Your third argument is: Aramis
[root@waky bash_practice]#
Итоги:
Сегодня мы научились использовать аргументы в скриптах. Узнали, как с их помощью передать значение в скрипт и как контролировать количество передаваемых аргументов. Использование аргументов делает скрипт более гибким и универсальным.
Следующий урок: bash скрипты для начинающих — урок №12: Оператор case.