我有这个代码:
if [[ $1 = "-s" ]] && [[ $2 = 0-9 ]]
then
echo "yes"
fi
Run Code Online (Sandbox Code Playgroud)
0-9 对我不起作用。我真正想要的是输入,例如,-x 3(或任何数字)。
if [[ $1 = "-s" ]] && [[ $2 -ge 0 ]] && [[ $2 -le 9 ]]
Run Code Online (Sandbox Code Playgroud)
-ge: 大于或等于
-le: 小于或等于
这是可能的,但您需要使用字符类 ( [0-9])。例如:
if [[ "$1" = "-s" ]] && [[ "$2" = [0-9] ]]
then
echo "yes"
fi
Run Code Online (Sandbox Code Playgroud)
但是,以上仅适用于$2由单个数字组成的情况。如果要$2由一位或多位数字组成,请使用:
if [[ "$1" = "-s" ]] && [[ "$2" != *[!0-9]* && "$2" = [1-9]* ]]
then
echo "yes"
fi
Run Code Online (Sandbox Code Playgroud)
在较新的 bash 版本中,您还可以使用正则表达式:
if [[ "$1" = "-s" ]] && [[ "$2" =~ ^[0-9]+$ ]]
then
echo "yes"
fi
Run Code Online (Sandbox Code Playgroud)
该^字符串的开始,比赛$结束。的+意思是“0个或多个”。因此,^[0-9]*$只有从头到尾只包含一个或多个数字的字符串才会为真。