bash - 如何解析 mmcli 输出中的调制解调器编号、标识符和名称?

标签 bash shell unix

我认为这对大多数人来说都是一个简单的方法,但是从中解析调制解调器编号和调制解调器管理器文件夹编号的最有效方法是什么:

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

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

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

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***)

最佳答案

使用纯 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 :读取变量 mm 中的第 4、6、7 次以后的测试, mnmt却忽略了休息
  • < <(mmcli -L) :命令替换以调用 mmcli -L并将其输出输入 read

关于bash - 如何解析 mmcli 输出中的调制解调器编号、标识符和名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68598552/

相关文章:

linux - 如何将Example.bat更改为Example.pl?

unix - 如何使用argv使用AWK打印文本文件的第N列

linux - 文件描述符执行 IO 是否需要处理器周期?

linux - Sudoers 文件中的 Bash 脚本,但希望该脚本在特定条件下询问根密码

bash - 删除文件名的中间部分

bash - 即使使用双引号也会发生分词

linux - unix、BSD、Mac OS X、linux 和 GNU 之间有什么关系?

linux - 有什么方法可以在 Linux 中查看字体的 PostScript 名称

swift - 如何使用 Swift 从 cocoa 应用程序运行 shell 脚本?

linux - .gitlab-ci.yml 中最简洁明了的SSH命令描述方式