Bash Script ищет строку в параметре для установки переменной [закрыто]

Я новичок в Linux, не так много в языке программирования. Я ищу способ установить переменную (var2) на заданное значение в зависимости от соответствия последних 3 байтов адреса MAc в var1

Вот пример:

      var1="AA:BB:CC:DD:EE:FF"

вот моя "таблица поиска" на основе трех последних значений адреса Mac "

      DD:EE:FF > var2="Home"
AB:CD:EF > var2="Garage"
FE:DC:GH > var2="Bedroom1"
... (Max 20)

Важный момент: «Таблица поиска» должна быть «читаемой», потому что ее нужно легко настраивать. В противном случае я бы использовал очень уродливые операторы IF. :-)

Спасибо всем, кто найдет время, чтобы помочь мне в этом.

2 ответа

Решение

Похоже, все, что вам нужно, это case утверждение.

      case $var1 in
 *:DD:EE:FF) var2="Home";;
 *:AB:CD:EF) var2="Garage";;
 *:FE:DC:GH) var2="Bedroom1";;
esac

Я бы упростил таблицу (называемую table.txt ниже):

      DD:EE:FF Home
AB:CD:EF Garage
FE:DC:GH Bedroom1

Тогда это работает:

      SUFF=$(echo $1 | cut -d ':' -f4-)
echo $SUFF
RES=$(grep ^$SUFF table.txt | cut -d ' ' -f 2)
echo $RES

пример:

      > ./run.sh AA:BB:CC:DD:EE:FF
DD:EE:FF
Home

Думаю, отсюда вы сможете настроить его под свой сценарий.

Другие вопросы по тегам