function print_array(){
NUMBER=1
for i in ${$1[@]}; do
printf "%d: %s \n" $NUMBER $i
$((NUMBER ))
done
}
我想撰寫一個可以接受陣列作為引數并列印陣列內所有內容的函式。
所以我寫了類似 ${$1[@]} 的東西,shell 說這是一個“糟糕的替代”。
有什么方法可以達到同樣的效果?謝謝!
uj5u.com熱心網友回復:
這段代碼有幾個問題,但主要問題是$1永遠不會是陣列。如果要將陣列傳遞給函式,則需要執行以下操作:
print_array(){
NUMBER=1
for i in "${@}"; do
printf "%d: %s \n" $NUMBER "$i"
((NUMBER ))
done
}
myarray=(this is "a test" of arrays)
print_array "${myarray[@]}"
這將輸出:
1: this
2: is
3: a test
4: of
5: arrays
請注意,此腳本中的參考至關重要:寫作${myarray[@]}與寫作不同"${myarray[@]}";有關詳細資訊,請參閱 bash 手冊的陣列部分,以及有關vs的資訊的特殊引數部分。$@"$@"
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/451688.html
標籤:贝壳
