Назад | Перейти на главную страницу

Не работать в цикле на 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