2

「forループ」を使用してすべての引数を処理できることを知っています。しかし、私のコードでは、私は好むだろう

i = 1
if [ ${$i} == xx] ; then
 xxx
fi

((iArg++))

if [ ${$i} == xx] ; then
 xxx
fi

明らかに、${$i} は機能していません。どうすれば正しくなるでしょうか?

私は使用してcshを書いていました

$argv[$i]

今すぐshシェルを使用する必要があります。手伝ってくれてありがとう

4

1 に答える 1

5

この非常に困難なため、引数の解析は通常、 and を使用して行われ$1ますshift。典型的なループは次のようになります。

while [ $# -gt 0 ]; do
    case $1 in
        -a) echo "-a";    shift 1;;   # option with no argument
        -b) echo "-b $2"; shift 2;;   # option which takes argument, use $2
        -c) echo "-c";    shift 1;;
    esac
done

そうは言っても、間接変数名を行う方法は、次のように を使用します!

${!i}
于 2013-08-08T15:06:39.267 に答える