Я написал сценарий на 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