所以,如果我有一個bash數組:使bash的陣列從逐步增加另一個陣列
ar=("one" "two" "three" "four")
是什麼力量讓一個新的陣列,使得它看起來像這樣的最佳方式:
ar-new=("one" "one two" "one two three" "one two three four")
我編寫了一些在for循環中使用for循環並使用seq
的東西。有沒有更好/更優雅的方式來完成這一點?
所以,如果我有一個bash數組:使bash的陣列從逐步增加另一個陣列
ar=("one" "two" "three" "four")
是什麼力量讓一個新的陣列,使得它看起來像這樣的最佳方式:
ar-new=("one" "one two" "one two three" "one two three four")
我編寫了一些在for循環中使用for循環並使用seq
的東西。有沒有更好/更優雅的方式來完成這一點?
這裏的另一種方式:
for ((i=1; i<=${#ar[@]}; i++))
do
ar_new+=("${ar[*]:0:$i} ")
done
甜到底我在找什麼(用bash變量本身進行一些操作) – polyglot 2009-11-10 17:40:18
根據你正在嘗試完成的內容,你可以在一個循環內完成而不需要任何外部命令。
使用算術for
循環:
typeset -a ar
ar=("one" "two" "three" "four")
typeset -a ar_new=()
p=""
for ((i=0; i < ${#ar[@]}; ++i)); do
p="$p${p:+ }${ar[$i]}"
ar_new[$i]="$p"
done
使用字符串for
循環迴路(可能不適合大型陣列工作?可能是大型陣列較慢):
typeset -a ar
ar=("one" "two" "three" "four")
typeset -a ar_new=()
p=""
for s in "${ar[@]}"; do
p="$p${p:+ }$s"
ar_new=("${ar_new[@]}" "$p")
done
轉儲無論你「熟」,我們將看到如何改善它 – 2009-11-10 07:52:19
你解決了什麼實際問題? – ghostdog74 2009-11-10 07:53:27