В CentOS, вероятно, есть Bash, поэтому, если вы можете его использовать, вы можете запустить срез массива:
for x in "${@:1:$# - 1}" ; do
echo do something with "$x"
done
Обозначение ${@:n:m}
принимает позиционные параметры m
, начиная с номера n
. Мы берем их общее количество из $#
и уменьшаем на единицу, чтобы игнорировать последний параметр. Смещение и длина берутся как арифметические выражения, как в $((...))
, так что мы можем сделать арифметику прямо здесь, как Стефан прокомментировал ниже. Индексы массива обычно начинаются с нуля, но в случае $@
, начиная с нуля, будет введено имя оболочки из $0
, а это не то, что нам нужно.
Обратите внимание, что вы, скорее всего, захотите заключить выражения $@
или ${@:n:m}
в кавычки, чтобы предотвратить дальнейшее разделение ваших аргументов.