shell脚本:使用$ i从for循环中打印参数

时间:2014-01-08 23:24:54

标签: shell scripting

我有一个名为hello.sh的脚本,我这样调用它:

./hello.sh yes no sure why how

我想在前两个参数之后打印所有参数:sure why how

代码:

for ((i = 3; i <= $#; i++));
do
    echo "$i"
done

但不是sure why how,而是打印1 2 3

如何打印参数而不打印索引?

2 个答案:

答案 0 :(得分:2)

没有数组的这种更简单,更简单的方法怎么样:

arg1="$1" arg2="$2"  # save $1 and $2

shift 2

for i; do
    echo "$i"
done

如果您稍后不会实际使用这些值,则不需要第一行。

<强>更新

或者@chepner指出,如果您使用bash,并且希望避免使用$@修改shift,则可以这样做:

arg1="$1" arg2="$2"  # save $1 and $2

for i in ${@:3}; do
    echo "$i"
done

答案 1 :(得分:0)

这是因为你回复$i而不是位置$i的参数。尝试:

args=("$@")

for ((i = 3; i <= $#; i++)); do
  echo ${args[$i]}
done