Как получить следующий аргумент в BASH?

Рейтинг: 0Ответов: 1Опубликовано: 26.03.2015

Хочу в цикле присвоить _P=arg3, если до него стоял -x.

#foo.sh arg1 -x arg3

for n in $@
do
  if [ $n == "-x" ]; then
     _P=$(n++)    # _P необходимо присвоить arg3 
  break
  fi
done

Но не присваивает. Как правильно присвоить следующий аргумент?

Ответы

▲ 2

Изучите, как работает это:

while [[ $# >0 ]];
do
if [ $1 == "-x" ]; then
      shift 
    _P=$1    # _P необходимо присвоить arg3 
      echo $_P
fi
shift 
done

UPD

INDEX=1
for n in $@
do
  ((INDEX++))
  if [ $n == "-x" ]; then
     _P=${@:$INDEX:1}    # _P необходимо присвоить arg3 
     echo "$_P"
  break
  fi
done