我正在做一個函數來輕鬆地將我的字符串轉換爲數組,作爲我需要的。在bash中的一個函數中設置位置參數
我有點遇到一個奇怪的問題。我對bash仍然陌生,這真的讓我感到困擾。任何人都可以對此有所瞭解嗎?
convert.sh
#!/bin/bash
convert2array() {
read -a $1_arr <<< $1
}
mx=$(dig +short google.com mx | cut -d' ' -f 2 | sed 's/\.$//')
convert2array "$mx"
echo ${mx_arr[@]}
輸出:
bash -x convert2array.sh
++ sed 's/\.$//'
++ cut '-d ' -f 2
++ dig +short google.com mx
+ mx='alt2.aspmx.l.google.com
alt3.aspmx.l.google.com
alt1.aspmx.l.google.com
aspmx.l.google.com
alt4.aspmx.l.google.com'
+ convert2array mx
+ read -a mx_arr
+ echo 585911
585911
通過雙引號替換你總是創建一個_single_元素包含_all lines_的數組,這不是意圖。如果沒有雙引號,輸出行總是受到分詞和匹配的影響,即使這種情況在_this_情況下可行,'($(...))'也不是一種將命令輸出讀入一個數組(除非你設置'$ IFS'並關閉通配符,這是不值得的)。 – mklement0
@ mklement0:感謝您的指針。我想了一下,但後來忘了把這個雙引號趕緊發表一個答案:)現在更改 – sjsam
@ mklement0:另外,我同意你的評論的第二部分 – sjsam