通过跳过第一个参数的迭代
嗨,我有以下几点:
bash_script parm1 abcd ..n
我想迭代并打印命令行中的所有值,而不是从parm1开始
这应该做到这一点:
#ignore first parm1 shift # iterate while test ${#} -gt 0 do echo $1 shift done
你可以在bash中“切片”数组; 而不是使用shift
,你可以使用
for i in ${@:2} do echo $i done
$@
是所有命令行参数的数组, ${@:2}
是与第一个元素相同的数组。
这个方法会保留第一个参数,以防以后使用它
#!/bin/bash for ((i=2;i<=$#;i++)) do echo ${!i} done
要么
for i in ${*:2} #or use $@ do echo $i done
您可以对位置参数使用隐式迭代:
shift for arg do something_with $arg done
正如你所看到的,你不必在for
语句中包含"$@"
。
另一个味道,有点短,保持参数列表
shift for i in "$@" do echo $i done