嗨,我有以下内容:
bash_script parm1 a b c d ..n
Run Code Online (Sandbox Code Playgroud)
我想迭代并打印命令行中的所有值,从a开始,而不是从parm1开始
Ism*_*awi 120
你可以用bash"切片"数组; 而不是使用shift,你可能会使用
for i in "${@:2}"
do
echo "$i"
done
Run Code Online (Sandbox Code Playgroud)
$@是所有命令行参数${@:2}的数组,是第一个元素的相同数组.双引号确保正确的空格处理.
Sch*_*ron 29
这应该这样做:
#ignore first parm1
shift
# iterate
while test ${#} -gt 0
do
echo $1
shift
done
Run Code Online (Sandbox Code Playgroud)
如果您想稍后使用它,此方法将保留第一个参数
#!/bin/bash
for ((i=2;i<=$#;i++))
do
echo ${!i}
done
Run Code Online (Sandbox Code Playgroud)
要么
for i in ${*:2} #or use $@
do
echo $i
done
Run Code Online (Sandbox Code Playgroud)
您可以对位置参数使用隐式迭代:
shift
for arg
do
something_with $arg
done
Run Code Online (Sandbox Code Playgroud)
如您所见,您不必"$@"在for声明中包含.
| 归档时间: |
|
| 查看次数: |
40386 次 |
| 最近记录: |