Используя shift
, вы можете сделать следующее:
num_args="$#"
for (( i = 1; i <= "$num_args"; i++ )); do
echo "$1"
shift
done
Здесь команда shift
сдвигает каждый следующий аргумент из аргументов, переданных в сценарий, на значение $ 1
.
Например:
$ ./myscript one two three four five six
one
two
three
four
five
six
, при этом при первом запуске цикла $ 1 = "один"
, затем во втором запуске цикла $ 1 = "два"
, поэтому вперед, до последнего аргумента.
Изменить: Если вы хотите получить доступ к любому из аргументов вашего скрипта без порядка, например. используя 2-й и 4-й аргументы одновременно, один метод использует массивы bash следующим образом:
# Initialize the array 'myargs' with all script arguments
myargs=( "$@" )
for (( i = 0; i < "$#"; i++ )); do
echo "${myargs[$i]}"
done
Здесь вы можете получить доступ к любому из ваших аргументов с любым указанным индексом i
, используя форму "$ {myargs [$ i]} "
.