Что такое позиционный параметр?

Позиционный параметр - это аргумент, указанный в командной строке, который используется для запуска текущего процесса в оболочке. Значения позиционных параметров хранятся в специальном наборе переменных, поддерживаемых оболочкой.

Переменные, которые хранят позиционные параметры

Типичным примером оболочки, которая использует позиционные параметры, является 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.

Параметр, условия программирования