Чтение аргументов командной строки

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,… вам не подходят.

Смотрите также