我想提取以下命令的结果以将其存储在变量中:
nmcli connection show
提取的结果应为ens18
。相反,它大致如下:
NAME UUID TYPE DEVICE
ens18 XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX 802-3-ethernet ens18
...如下面的图形屏幕截图所示:
我尝试了一段时间,但无法弄清楚如何解决这个问题。
答案 0 :(得分:2)
由于只有一个结果,因此只需执行以下操作即可:
VAR=$(nmcli -g name connection show)
如果获得更多结果,则可以使用head
和tail
命令。
活动的始终是第一个,因此要在运行多个结果时获得活动的:
VAR=$(nmcli -g name connection show | head -1)
VAR
是变量名$( ... )
是命令替换。-g name
获取所需文件的值。这意味着运行命令并将结果放入VAR
。
答案 1 :(得分:0)
如果nmcli命令的输出是制表符分隔的,则可以这样做
with awk:
variable=$(nmcli connection show | awk -F'\t' '{print $4}' | tail -1)
切边:
variable=$(nmcli connection show | cut -f4 | tail -1)
答案 2 :(得分:0)
可能对您有帮助
var=$(nmcli connection show|grep -v NAME| awk -F " " '{print $1}')
致谢
答案 3 :(得分:0)
可以使用awk
轻松实现:
var=$(nmcli connection show | awk 'NR==2{print $1}')
echo "$var"
输出:ens18
它如何工作?
nmcli connection show
的输出传递到awk
。NR==2
告诉awk
处理第二行输入。{print $1}
告诉awk
打印要处理的行的第一列。