我需要有关如何将bash变量与特定格式进行比较的帮助。
我将使用读取命令
读取用户输入for example:
MyComputer:~/Home$ read interface
eth1
MyComputer:~/Home$ echo $interface
eth1
现在我需要检查带有IF循环的“$ interface”变量(它应该在开头有“eth”并且应该包含数字0-9):
if [[ $interface=^eth[0-9] ]]
then
echo "It looks like an interface name"
fi
提前致谢
答案 0 :(得分:3)
您可以使用正则表达式:
if [[ $interface =~ ^eth[0-9]+$ ]]
then
...
fi
答案 1 :(得分:1)
你可以使用bash的globs:
if [[ $interface = eth+([[:digit:]]) ]]; then
echo "It looks like an interface name"
fi
(避免正则表达式删除一个问题)。哦,请注意=
符号周围的空格,以及[[
和]]
之前和之后的空格。
答案 2 :(得分:0)
你可以使用bash V3 + operator =~
作为Andrew Logvinov说:
[[ $interface =~ ^eth[0-9]+$ ]] && # ...
或者:
if [[ $interface =~ ^eth[0-9]+$ ]]; then
# ...
fi
否则,你也可以使用egrep
或grep -E
(这对于像sh这样的旧shell有用):
echo "$interface"|egrep "^eth[0-9]+$" > /dev/null && # ...
或者:
if echo "$interface"|egrep "^eth[0-9]+$" > /dev/null; then
# ...
fi