3
nmcli -t -f STATE,WIFI,WWAN

出力を与えます

connected:enabled:disabled

これを次のようなものに変換したい

Networking: connected, Wifi: enabled, WWAN: disabled

私にとっての論理的な解決策は、これを配列に変換することです。bashスクリプトを初めて使用するので、配列は単なる通常の変数であり、要素は空白で区切られていることを読みました。現在、私のコードは

declare -a NMOUT=$(nmcli -t -f STATE,WIFI,WWAN nm | tr ":" "\n")

これはforループでは機能するようですが、${NMOUT[]}のように特定の要素を要求したい場合はそうではありません。明らかに、私はここでいくつかの重要な概念を見逃しています。この配列の特定の要素にアクセスするにはどうすればよいですか?

4

2 に答える 2

2
IFS=: read -a NMOUT < <(nmcli -t -f STATE,WIFI,WWAN)
于 2012-05-10T20:32:45.600 に答える
1

Ignacio Vazquez-Abrams provided a much better solution for creating the array. I will address the posted question.

Array's in bash are indexed by integers starting at 0.

"${NMOUT[0]}" # first element of the array
"${NMOUT[2]}" # third element of the array
"${NMOUT[@]}" # All array elements
"${NMOUT[*]}" # All array elements as a string

The following provides good information on using arrays in bash: http://mywiki.wooledge.org/BashFAQ/005

于 2012-05-11T02:12:53.550 に答える