Linux
不要在 bash 上循環工作
我在 bash 上寫過腳本。它得到了所有介面列表。並且在循環中已經與變數進行了比較。但效果不好。我的腳本:
#!/bin/bash search=`ls -1 /sys/class/net | grep -v lo` echo $search eth=eno1 echo $eth for i in $search; do if [ $i == $eth ]; then echo "You choose is: $i" else echo "not found" fi done
結果我有:
dummy0 eno1 enp4s0 virbr0 virbr0-nic eno1 not found You choose is: eno1 not found not found not found
沒關係。我想收到一條消息“您選擇的是:eno1”。如果 $eth 不包含在“/sys/class/net”中,我想得到消息“未找到”。我哪裡有錯誤?請幫忙。謝謝你。
用一個 if 語句替換整個循環,如下所示:
if [[ "$eth" =~ "$search" ]];then echo "You choose is: $eth" else echo "not found" fi
整個腳本以一種非常緊湊的方式:
#!/bin/bash eth=eno1 if [ -d /sys/class/net/$eth ];then echo "You choose is: $eth" else echo "not found" fi