Bash 脚本在参数中寻找字符串来设置变量
Bash Script looking for string in parameter to set a variable
我对 linux 还很陌生,对编程语言不是很了解。
我正在寻找一种方法来将变量 (var2) 设置为给定值,具体取决于匹配 var1
中的 MAc 地址的最后 3 个字节
这是一个例子:
var1="AA:BB:CC:DD:EE:FF"
这是我根据 mac 地址的最后 3 个值进行的“查找 table”
DD:EE:FF > var2="Home"
AB:CD:EF > var2="Garage"
FE:DC:GH > var2="Bedroom1"
... (Max 20)
重要事项:“查找 table”需要“可读”,因为它需要易于配置。否则我会使用非常难看的 IF 语句。 :-)
感谢所有愿意花时间帮助我的人。
我会简化table(以下简称table.txt
):
DD:EE:FF Home
AB:CD:EF Garage
FE:DC:GH Bedroom1
然后这有效:
SUFF=$(echo | 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
我想你可以从这里为你的脚本调整它。
看来您只需要 case
声明即可。
case $var1 in
*:DD:EE:FF) var2="Home";;
*:AB:CD:EF) var2="Garage";;
*:FE:DC:GH) var2="Bedroom1";;
esac
我对 linux 还很陌生,对编程语言不是很了解。 我正在寻找一种方法来将变量 (var2) 设置为给定值,具体取决于匹配 var1
中的 MAc 地址的最后 3 个字节这是一个例子:
var1="AA:BB:CC:DD:EE:FF"
这是我根据 mac 地址的最后 3 个值进行的“查找 table”
DD:EE:FF > var2="Home"
AB:CD:EF > var2="Garage"
FE:DC:GH > var2="Bedroom1"
... (Max 20)
重要事项:“查找 table”需要“可读”,因为它需要易于配置。否则我会使用非常难看的 IF 语句。 :-)
感谢所有愿意花时间帮助我的人。
我会简化table(以下简称table.txt
):
DD:EE:FF Home
AB:CD:EF Garage
FE:DC:GH Bedroom1
然后这有效:
SUFF=$(echo | 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
我想你可以从这里为你的脚本调整它。
看来您只需要 case
声明即可。
case $var1 in
*:DD:EE:FF) var2="Home";;
*:AB:CD:EF) var2="Garage";;
*:FE:DC:GH) var2="Bedroom1";;
esac