我正在从用户获取参数 ./inputControl.sh param1 param2 ... 我希望用户只能输入数字。不能输入任何字等
如果他们输入单词,我会向他们显示错误。
感谢解答
最佳答案
Bash 对正则表达式的支持还算不错
#!/usr/bin/bash
param1=$1
param2=$2
number_regex="^[0-9]+$"
if ![[ $param1 ]] || [[ $param1 !~ $number_regex ]] ; then
echo Param 1 must be a number
exit 1
fi
if ![[ $param2 ]] || [[ $param2 !~ $number_regex ]] ; then
echo Param 2 must be a number
exit 1
fi
如果您也可以接受 float ,那么您可以将 number_regex
设置为如下内容:
"^[+-]?[0-9]+\.?[0-9]*$"
或
"^[+-]?[0-9]+\.?[0-9]*([eE][+-]?[0-9]+)?$"
(最后两个正则表达式未经测试,可能不太正确)。
关于linux - 如何控制 Shell 脚本的输入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1670443/