比较bash变量

时间:2013-11-09 16:34:52

标签: bash

我需要有关如何将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

提前致谢

3 个答案:

答案 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

否则,你也可以使用egrepgrep -E(这对于像sh这样的旧shell有用):

echo "$interface"|egrep "^eth[0-9]+$" > /dev/null && # ...

或者:

if echo "$interface"|egrep "^eth[0-9]+$" > /dev/null; then
    # ...
fi