首页 > 解决方案 > 如何解析调制解调器编号、标识符和名称的 nmcli 输出?

问题描述

我认为这对你们中的大多数人来说很容易,但是从中解析调制解调器编号和调制解调器管理器文件夹编号的最有效方法是什么:

root@5109910:~# mmcli -L
    /org/freedesktop/ModemManager1/Modem/1 [Sierra Wireless Inc.] Sierra Wireless EM7345 4G LTE

和是动态的ModemManager1,我希望能够在 shell 脚本中操作调制解调器。1[Sierra Wireless Inc.] Sierra Wireless EM7345 4G LTE

更具体地说,我想生成以下内容:

MODEM_NUMBER=$(mmcli -L | grep ***PATERN TO PARSE 1 HERE***)

MODEM_DIR=$(mmcli -L | grep ***PATERN TO PARSE ModemManager1 HERE***

MODEM=$(mmcli -L | grep ***PATTERN TO PARSE [Sierra Wireles etc etc HERE***)

标签: bashshellunix

解决方案


使用纯 bash,您可以一步完成,即单次调用mmcli -L命令:

IFS='/ ' read -r _ _ _ mm _ mn mt < <(mmcli -L)

# chek variable's content
declare -p mm mn mt

输出:

declare -- mm="ModemManager1"
declare -- mn="1"
declare -- mt="[Sierra Wireless Inc.] Sierra Wireless EM7345 4G LTE"

细节:

  • IFS='/ ': 设置/或空格作为输入字段分隔符
  • read -r _ _ _ mm _ mn mt:阅读变量中的第 4、6 和 7 次以后的测试,mm同时忽略休息mnmt
  • < <(mmcli -L): 调用命令替换mmcli -L并将其输出提供给read

推荐阅读