我希望这只输出“匹配!”如果只传递单个字符“a”或“b”作为参数。不是aaaaa,不是bcfqwefqef,不是qwerty。
#!/bin/bash
P="a|b"
if [[ "$1" =~ $P ]]; then
echo "match!"
else
echo "no!"
fi
是的,我已经通过了一些SO帖子来实现这一目标。将$ P加到引号中也不起作用。
答案 0 :(得分:5)
你需要锚定你的正则表达式:
#!/bin/bash
re="^(a|b)$"
if [[ "$1" =~ $re ]]; then
echo "match!"
else
echo "no!"
fi
顺便说一下,这并不需要正则表达式。您可以使用glob模式将相等性用作:
if [[ "$1" == [ab] ]]; then
echo "match!"
else
echo "no!"
fi