Bash:
Чтение аргументов командной строки
Как это сделать:
#!/bin/bash
# Вывести имя скрипта.
echo "Имя скрипта: $0"
# Вывести первый аргумент.
echo "Первый аргумент: $1"
# Вывести все аргументы.
echo "Все аргументы: $@"Пример вывода, предполагая, что ваш скрипт назван ’example.sh’ и вы вызвали ./example.sh arg1 arg2:
Имя скрипта: ./example.sh
Первый аргумент: arg1
Все аргументы: arg1 arg2Цикл по аргументам:
#!/bin/bash
# Цикл по каждому аргументу.
for arg in "$@"; do
echo "Аргумент: $arg"
doneПодробнее
Bash поддерживает аргументы командной строки уже давно; это позиционные параметры, $0 до $9, с $@ и $*, показывающими все. $0 это сам скрипт, $1 до $9 это первый до девятого аргумента; для десятого и дальше нужны скобки, например ${10}.
Использование $@ обычно лучше, чем $*, поскольку оно корректно обрабатывает аргументы, содержащие пробелы. $@ выдает каждый аргумент как отдельное “слово”; $* объединяет их все в одно “слово”.
Вы можете пролистывать аргументы с помощью команды shift, которая перемещает $2 на место $1, и так далее, отбрасывая старый $1.
Альтернативы? Конечно. getopts и getopt предоставляют больше контроля за опциями (например, -h для помощи) и разбором флагов; проверьте их, если $1, $2,… вам не подходят.
Смотрите также
- Руководство по Bash о специальных параметрах: https://www.gnu.org/software/bash/manual/html_node/Special-Parameters.html
- Расширенное руководство по написанию скриптов на Bash: https://www.tldp.org/LDP/abs/html/
- Учебник по
getopts: https://wiki.bash-hackers.org/howto/getopts_tutorial