繁体   English   中英

循环遍历bash中的参数

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM