我正在尝试验证用户输入
if ! [[ "$operator" =~ ("[+-/*]") ]] ; then # validate user input to include decimals
exec >&2; echo "error: Not a valid number, please try again";
echo
else
break
echo
fi
尝试了多种组合而不工作? Ypu帮助将不胜感激!
答案 0 :(得分:2)
两个问题:
$operator
左右的引号,尽管它们没有任何危害。-
是[]
中的特殊字符,用于a-z
之类的内容。把它作为第一个或最后一个角色来解决这个问题。所以:
if ! [[ $operator =~ [-+/*] ]] ; then
我认为习惯性地在!
内写[[ ]]
,但要么有效。
答案 1 :(得分:0)
if ! [[ "$operator" =~ [-+]?[0-9]* ]] ; then
...
...
fi
答案 2 :(得分:0)
sgeorge-mn:~ sgeorge$ cat validate.sh
OPERATOR=$1
REGEX='[+*-/]';
if ! [[ $OPERATOR =~ $REGEX ]]; then
echo "Not valid input"
else
echo "Valid input"
fi
sgeorge-mn:~ sgeorge$ bash validate.sh '-'
Valid input
sgeorge-mn:~ sgeorge$ bash validate.sh '*'
Valid input
sgeorge-mn:~ sgeorge$ bash validate.sh '/'
Valid input
sgeorge-mn:~ sgeorge$ bash validate.sh '+'
Valid input
sgeorge-mn:~ sgeorge$ bash validate.sh 's'
Not valid input
sgeorge-mn:~ sgeorge$ bash validate.sh '132'
Not valid input