我想使用最短的行連接無限數量的陣列,所以為此我做了下面的代碼:
#!/bin/bash
declare -a list1=("element1")
declare -a list2=("element2")
declare -a list3=("element3")
declare -a list4=("element4")
declare -a list
for i in {1..4}
do
list=( ${list[@]} ${list$i[@]} )
done
echo ${list[*]}
但是上面的代碼不起作用,因為 $i 不被視為變數,并且錯誤是: ${list$i[@]} 錯誤替換
uj5u.com熱心網友回復:
您可以使用變數間接:
for i in {1..4} ; do
ref="list$i[@]"
list =("${!ref}")
done
echo "${list[@]}"
uj5u.com熱心網友回復:
以下代碼輸出連接在一起的所有 4 個串列。
eval echo \${list{1..4}[*]}
此代碼對串列元素的結果運行檔案名擴展(*被檔案名替換)。考慮犧牲 4 個字符并做\"\${list{1..4}[*]}\".
請注意, eval 是邪惡的https://mywiki.wooledge.org/BashFAQ/048,這樣的代碼令人困惑。我不會在真正的腳本中撰寫這樣的代碼——我肯定會使用回圈。使用 shellcheck 檢查您的腳本。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/414664.html
標籤:
上一篇:在bash中用換行符連接字串?
