[英]looping over arguments in bash
在bash中,我可以循环遍历所有参数$ @。 有没有办法获得当前参数的索引? (这样我可以参考下一个或前一个。)
与您指定的不完全相同,但您可以通过多种不同的方式迭代参数。
例如:
while test $# -gt 0
do
echo $1
shift
done
您可以遍历参数号,并使用间接扩展( ${!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”,而最后一个后面的“next”参数将显示为空白。
将位置参数复制到数组非常简单:
$ 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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.