1

bash 変数を特定の形式と比較する方法について助けが必要です。

読み取りコマンドでユーザー入力を読み取ります

for example:
MyComputer:~/Home$ read interface
eth1
MyComputer:~/Home$ echo $interface
eth1

ここで、「$interface」変数が IF ループであるかどうかを確認する必要があります (先頭に「eth」があり、0 ~ 9 の数字が含まれている必要があります)。

if [[ $interface=^eth[0-9] ]]
then
    echo "It looks like an interface name"
fi

前もって感謝します

4

3 に答える 3

3

これには正規表現を使用できます。

if [[ $interface =~ ^eth[0-9]+$ ]]
then
  ...
fi
于 2013-11-09T16:37:49.087 に答える
1

これには bash のグロブを使用できます。

if [[ $interface = eth+([[:digit:]]) ]]; then
    echo "It looks like an interface name"
fi

(正規表現を避けることで 1 つの問題が解消されます)。ああ、=記号の周りのスペース、および の前後のスペースにも注意し[[]]ください。

于 2013-11-09T17:39:38.473 に答える
0

=~Andrew Logvinovが言ったように、bash V3+オペレーターを使用できます:

[[ $interface =~ ^eth[0-9]+$ ]] && # ...

または :

if [[ $interface =~ ^eth[0-9]+$ ]]; then
    # ...
fi

それ以外の場合は、egreporを使用できますgrep -E(これは、sh のような古いシェルで便利です...):

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

または :

if echo "$interface"|egrep "^eth[0-9]+$" > /dev/null; then
    # ...
fi
于 2013-11-09T17:31:41.227 に答える