在 bash 中,我可以遍历所有参数 $@。有没有办法获取当前参数的索引?(以便我可以参考下一个或上一个。)
问问题
5924 次
3 回答
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 回答
6
与您指定的不完全一样,但您可以通过多种不同的方式迭代参数。
例如:
while test $# -gt 0
do
echo $1
shift
done
于 2013-03-29T03:00:39.037 回答
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 回答