Цикл не работает на 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», я хочу получить сообщение «не найдено». Где у меня ошибка? Пожалуйста помоги. Спасибо.

1
задан 15 November 2016 в 13:24
1 ответ

заменить весь цикл одним оператором 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
1
ответ дан 3 December 2019 в 23:38

Теги

Похожие вопросы