Linux

不要在 bash 上循環工作

  • November 15, 2016

我在 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

引用自:https://serverfault.com/questions/814980