Переменные, которые хранят позиционные параметры
Типичным примером оболочки, которая использует позиционные параметры, является bash. Вы можете использовать bash в Linux, BSD, macOS X и Windows 10.
Рассмотрим следующую команду bash. Имя команды - моя команда . Командная строка имеет три параметра: один, два и три четыре .
моя команда один два "три четыре"
Совет: Позиционные параметры разделены пробелом. Оболочка интерпретирует вещи после пробелов как отдельные параметры. Если сам параметр содержит пробел, заключите его в кавычки, как в «трех четырех» выше.
Во время выполнения mycommand bash предоставляет следующие переменные оболочки:
Имя переменной | Значение |
---|---|
$ 0 | МояКоманда |
$ 1 | один |
$ 2 | два |
$ 3 | три четыре |
$ # | 3 |
[электронная почта защищена] | один два три четыре |
$ * | один два три четыре |
Переменная $ 0 устанавливается на первое слово команды - имя команды. Эта переменная полезна, потому что команды могут быть переименованы или выполнены с использованием символической ссылки. Некоторые программы ведут себя по-разному в зависимости от имени команды, используемой для запуска программы. $ 0 позволяет программе увидеть, какое имя команды ее запустило.
Переменные $ 1, $ 2 и $ 3 содержат значения первого, второго и третьего параметров соответственно. Если бы существовал четвертый параметр, его значение было бы помещено в переменную $ 4 . Доступ к параметрам больше 9 можно получить с помощью фигурных скобок вокруг числа; например, $ {10} будет десятым параметром, а $ {123} будет 123-м.
Переменная $ # содержит количество позиционных параметров, исключая $ 0.
Переменная [email protected] содержит значение всех позиционных параметров, кроме $ 0.
Переменная $ * такая же, как [электронная почта защищена], за исключением случаев, когда она заключена в двойные кавычки. При заключении в двойные кавычки $ * расширяется до $ 1c $ 2c $ 3c ... где c - первый символ $ IFS, внутренней переменной-разделителя поля bash. IFS используется для разделения слов, и его значением по умолчанию является «пробел, табуляция или символ новой строки» - здесь bash видит конец одного слова и начало следующего.
Если значение $ IFS равно « _ » (подчеркивание), «[email protected]» расширяется до:
один два три четыре
Принимая во внимание, что «$ *» расширяется до:
один два три четыре
Примеры
Вот несколько примеров использования позиционных параметров в bash.
Используя встроенную команду set, значение [email protected] может быть изменено для текущей оболочки. Все после установки - будет зарегистрирован как позиционный параметр.
набор - один два "три четыре"
Теперь мы можем перебрать эти переменные, используя for ... in :
для arg в [электронная почта защищена]; do echo "$ arg"; сделанный
один два три четыре
В bash [электронная почта защищена] - это список по умолчанию, который нужно повторять при запуске, поэтому эта команда также работает:
для арг; do echo "$ arg"; сделанный
один два три четыре
Итерирование по «$ *» (с двойными кавычками) даст объединенную строку позиционных параметров, соединенную с первым символом $ IFS :
КСФ = ""; для аргумента в "$ *"; do echo "$ arg"; сделанный
один два три четыре
Для получения дополнительной информации см. Документацию командной оболочки bash.
Параметр, условия программирования