如何在Bash中匹配此标志:
+
-
/
*
这是我尝试使用的代码,但是没有用。
is_sign(){
yoursign=$1
re="^[+,-,\/,\*]$"
if ! [[ $yoursign =~ $re ]] ; then
echo "Not a sign"
return 2
else
return 0
fi
}
is_sign $1
答案 0 :(得分:2)
您使用的模式包含以下问题:
\
进行匹配使用正则表达式-
必须位于POSIX括号表达式的开头或结尾使用
re='^[+/*-]$'
Demo:
is_sign() {
yoursign=$1
re='^[+/*-]$'
if ! [[ $yoursign =~ $re ]] ; then
echo "Not a sign"
#return 2
else
echo "Yeah, is a sign"
#return 0
fi
}
echo "$(is_sign "+")" # => Yeah, is a sign
echo "$(is_sign "m")" # => Not a sign
答案 1 :(得分:0)
您有两种解决方案:
正则表达式:
re='^[+/*-]$'
if ! [[ $yoursign =~ $re ]] ; then
全球:
glob='[+/*-]'
if ! [[ $yoursign == $glob ]] ; then
请注意,负号-
在字符类(在glob和正则表达式中)中是特殊的,因此您需要将其放在开头或结尾