Linux:Рецепты/Обработать большое количество аргументов в BASH скрипте: различия между версиями

Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску
 
(не показано 5 промежуточных версий этого же участника)
Строка 17: Строка 17:
while [[ $# -gt 0 ]]; do
while [[ $# -gt 0 ]]; do
echo "Аргумент $count = $1"
echo "Аргумент $count = $1"
count=$(($count+1))
count=$((count+1))
shift
shift
done
done
</syntaxhighlight>
</syntaxhighlight>


{{Примечание`|
{{Примечание1|
'''$#'''  - здесь хранится количество переданных аргументов, после выполнения команды shift, оно уменьшается на 1.
}}
 
{{Примечание1|
К переданным аргументам можно получить доступ через переменные вида: $1, $2, $3 и т.д. до $9. Для получения доступа к переменным больше $9, используйте {}: ${10}, ${11} и т.д.
}}
 
{{Примечание1|
Каждый раз когда выполняется команда shift, значение $2 перемещается в $1, $3 в $2 и т.д.
Каждый раз когда выполняется команда shift, значение $2 перемещается в $1, $3 в $2 и т.д.
}}
}}

Текущая версия от 10:13, 6 августа 2023

Проверка/Оформление/Редактирование: Мякишев Е.А.


Обработать большое количество аргументов в BASH скрипте

Проблема

Ваш Bash скрипт получает большое количество аргументов и вам необходимо их обработать.

Решение

Для этого подойдет команда shift, ниже код для примера обработки переданных аргументов:

count=1

while [[ $# -gt 0 ]]; do
	echo "Аргумент $count = $1"
	count=$((count+1))
	shift
done
Примечание

$# - здесь хранится количество переданных аргументов, после выполнения команды shift, оно уменьшается на 1.

Примечание

К переданным аргументам можно получить доступ через переменные вида: $1, $2, $3 и т.д. до $9. Для получения доступа к переменным больше $9, используйте {}: ${10}, ${11} и т.д.

Примечание

Каждый раз когда выполняется команда shift, значение $2 перемещается в $1, $3 в $2 и т.д.

См.также

Внешние ссылки