我有一個劇本叫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
。
如何打印參數而不是索引?
我有一個劇本叫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
。
如何打印參數而不是索引?
這是因爲你正在呼應$i
而不是位置$i
處的參數。嘗試:
args=("[email protected]")
for ((i = 3; i <= $#; i++)); do
echo ${args[$i]}
done
這個怎麼樣更簡單,更簡單的方法,而不數組:如果你實際上不會使用這些值以後
arg1="$1" arg2="$2" # save $1 and $2
shift 2
for i; do
echo "$i"
done
第一行不是必需的。
UPDATE
或者作爲@chepner指出的那樣,如果你使用bash
,並且要避免修改[email protected]
與shift
,你可以這樣做:
arg1="$1" arg2="$2" # save $1 and $2
for i in ${@:3}; do
echo "$i"
done
可以捕捉到如果你需要它們的前兩個參數('arg1 =「$ 1」; arg2 =「$ 2」'),然後使用「shift 2」丟失它們,所以參數3-N在'「$ @」'? –
這是什麼腳本語言?它似乎不是有效的代碼。那些雙括號看起來很奇怪。 –