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
Думаю, отсюда вы сможете настроить его под свой сценарий.