我有一个名为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
。
如何打印参数而不打印索引?
答案 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