如何解决当两个项目都存在时单独处理情况grepping ifconfig 输出
我正在尝试通过 dwm 窗口管理器将脚本通过管道传输到 linux 中的状态栏,并使其正常工作,但如果我同时有多个接口名称,则希望有一个命令回显“多个”。这是我到目前为止想出的但是如果 wlan0 和 usb0 同时启动,它不想在运行脚本时回显“多个”?非常感谢任何帮助。
#!/bin/bash
a=$(ifconfig | grep -ow "wlan0")
b="wlan0"
c=$(ifconfig | grep -ow "usb0")
d="usb0"
e=$(ifconfig | grep -ow 'usb0\|wlan0')
f="usb0\nwlan0"
if [[ "$a" == "$b" ]] ; then
echo -e "${b}"
elif [[ "$c" == "$d" ]] ; then
echo -e "${d}"
elif [[ "$e" == "$f" ]] ; then
echo "multiple"
else
echo "not connected"
fi
解决方法
将 multiple
情况放在第一,只有在没有达到的情况下才会落入其他情况。
#!/usr/bin/env bash
isup() {
[[ -e /sys/class/net/$1/carrier ]] || return 1
[[ $(</sys/class/net/$1/carrier) = 1 ]] || return 1
return 0
}
if isup usb0 && isup wlan0; then
echo "multiple"
elif isup usb0; then
echo "usb0"
elif isup wlan0; then
echo "wlan0"
fi
这也不需要我们有 ifconfig
(所有新的 Linux 发行版中都没有 - 现代替代品是 iproute2
,提供 ip
命令),以及此外避免运行任何外部命令(更不用说每个运行三个单独的外部命令了)。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。