我有一個 bash 數組,想要列印從 index 開始的陣列元素k
。
按照以下策略,事情並沒有成功。
printf "%s\n" "${ar[$j:]}"
答案1
語法是${ar[@]:j}
1。來自以下Parameter Expansion
部分man bash
:
${parameter:offset:length}
.
.
.
If parameter is an indexed array name subscripted by @ or *, the
result is the length members of the array beginning with ${pa‐
rameter[offset]}. A negative offset is taken relative to one
greater than the maximum index of the specified array. It is an
expansion error if length evaluates to a number less than zero.
所以給出
$ ar=("1" "2 3" "4" "5 6" "7 8" "9")
然後(記住 bash 數組索引是從 0 開始的):
$ j=3; printf '%s\n' "${ar[@]:j}"
5 6
7 8
9
或者,使用 C 風格的 for 迴圈:
for ((i=k;i<${#ar[@]};i++)); do
printf '%s\n' "${ar[i]}"
done
- 或者
${ar[@]:$j}
如果您願意 - 第二個$
是可選的,因為索引是在類似於以下的數字上下文中評估的((...))