擊功能如果我定義在bash殼的數組:與陣列輸入和輸出
a=()
a+=("A")
a+=("B")
a+=("C")
我可以與之交互的預期:
echo "${a[0]}"
# Returns "A"
echo "${a[1]}"
# Returns "B"
但是當我運行,通過相同的數組一個函數,我必須做一些錯誤的事情。首先,我將定義我的功能:
function sort_array {
declare -a array=("${!1}")
local sorted=()
sorted+=("1")
sorted+=("2")
sorted+=("3")
echo "${sorted[@]}"
}
現在,讓我們把它和檢查結果:
b=()
b=$(sort_array a[@])
echo "${b[0]}"
# Returns "1 2 3"
# But I'm expecting b[0] == 1
我在做什麼錯?我意識到我的例子可以完全刪除函數參數,但我的最終目標是編寫一個bash sort_array()
函數,我可以傳遞一個數組並返回一個數組。
什麼正在返回的是函數內部回聲,'的... B'它不是結果返回空。 –
在函數調用之後加上'b =($ b)'給出預期的結果。 對數組變量的字符串賦值只會將該值放在第一個索引中。 – hbagdi
@hbagdi做到了!我最終將賦值改爲了'b =($(sort_array a [@]))''。如果你想發佈這個答案,我會接受它。 –