私は必要に応じてeasly文字列を配列に変換する関数を作成しています。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
コマンド置換を二重引用符で囲むことにより、意図していない_all lines_を含む_single_要素を持つ配列が作成されます。二重引用符を使用しない場合、出力行は常に単語分割とglobbingの対象となりますが、そのような場合には動作しますが、 '($(...))'はコマンド出力を読み込む一般的な方法ではありません配列( '$ IFS'を設定してglobbingをオフにしない限り、これは有効ではありません)。 – mklement0
@ mklement0:ポインタありがとう。私はそれについて考えましたが、答えを投稿するために急いで二重引用符を外すことを忘れました:)今変更されました – sjsam
@ mklement0:また、私はあなたのコメントの第二部に同意します – sjsam