解释:
我有一个小bash脚本,它只运行任何Linux 命令(例如 say ifconfig
)
ifconfig的典型输出是这样的:
eth0 Link encap:Ethernet HWaddr 30:F7:0D:6D:34:CA
inet addr:10.106.145.12 Bcast:10.106.145.255 Mask:255.255.255.0
inet6 addr: fe80::32f7:dff:fe6d:34ca/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:1104666 errors:0 dropped:0 overruns:0 frame:0
TX packets:2171 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:444437904 (423.8 MiB) TX bytes:238380 (232.7 KiB)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.255.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:15900 errors:0 dropped:0 overruns:0 frame:0
TX packets:15900 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:467306 (456.3 KiB) TX bytes:467306 (456.3 KiB)
现在大多数人通常做的是将整个输出存储到文件/变量中并基于它进行解析。但是,我想知道是否有任何方法可以将输出的特定部分放入多个变量中(例如,在上面的示例中调用一个bash 变量${IPETH0}
来携带10.106.145.12
来自eth0的 IP 地址并从lo${IPLO}
携带 IP 地址而不运行ifconfig 命令两次)。127.0.0.1
类似于tee命令对输入所做的事情,但我想为输出执行此操作并将输出一次存储到 2 个或多个变量中。有任何想法吗?