(bash)如何作为离散数组元素访问命令输出块?

时间:2012-05-10 20:30:45

标签: arrays string bash concatenation

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 []}。显然,我错过了一些关键概念。如何访问此数组中的特定元素?

2 个答案:

答案 0 :(得分:2)

IFS=: read -a NMOUT < <(nmcli -t -f STATE,WIFI,WWAN)

答案 1 :(得分:1)

Ignacio Vazquez-Abrams为创建阵列提供了更好的解决方案。我将解决发布的问题。

bash中的数组由从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

以下提供了有关在bash中使用数组的详细信息:http://mywiki.wooledge.org/BashFAQ/005