bash では、すべての引数 $@ をループできます。現在の引数のインデックスを取得する方法はありますか? (次のものまたは前のものを参照できるように。)
質問する
5924 次
3 に答える
6
指定したとおりではありませんが、さまざまな方法で引数を反復処理できます。
例えば:
while test $# -gt 0
do
echo $1
shift
done
于 2013-03-29T03:00:39.037 に答える
6
引数番号をループし、間接展開 ( ${!argnum}
) を使用して、そこから引数を取得できます。
for ((i=1; i<=$#; i++)); do
next=$((i+1))
prev=$((i-1))
echo "Arg #$i='${!i}', prev='${!prev}', next='${!next}'"
done
$0
(への「前の」引数$1
)は「-bash」のようなものになり、最後の後の「次の」引数は空白になることに 注意してください。
于 2013-03-29T04:36:33.547 に答える
5
位置パラメーターを配列にコピーするのは非常に簡単です。
$ set -- a b c d e # set some positional parameters
$ args=("$@") # copy them into an array
$ echo ${args[1]} # as we see, it's zero-based indexing
b
そして、繰り返し:
$ for ((i=0; i<${#args[@]}; i++)); do
echo "$i ${args[i]} ${args[i-1]} ${args[i+1]}"
done
0 a e b
1 b a c
2 c b d
3 d c e
4 e d
于 2013-03-29T04:07:32.007 に答える