我有这个Bash脚本,它有一个基本的if...else
运算符,但脚本似乎没有正确识别这些值,只是继续脚本,它应该停止并显示错误。
我相信这是因为我使用的是浮点数,而bash无法分辨。这是脚本:
注意:error
功能只是一个客户功能
while getopts ":mh" opt; do
case $opt in
m)
version="${OPTARG}"
;;
\?)
error "-$OPTARG is not a valid option. Use '-h' for more options" 'warn'
;;
*|h)
usage
;;
esac
done
echo ${version} # here for debugging - this is either blank, or '0'
shift $((OPTIND-1))
[[ -z ${version} ]] && version=5.7
[[ "${version}" -lt "5.5" || "${version}" -gt "5.7" ]] &&
error "Valid MySQL versions: 5.5 - 5.6 - 5.7" 'error'
echo ${version} # this then becomes '5.7' further down the script
显然,如果-m
的值小于5.5或大于5.7,我希望脚本退出。我认为这与浮动值有关。
感谢任何帮助。
答案 0 :(得分:0)
您可以使用bash扩展来获取默认版本和正则表达式来验证它们。最好使用正则表达式进行验证-le
和-ge
,因为您可以指定有效选项列表。
version=${version:-5.7}
[[ "$version" =~ ^(5\.5|5\.6|5\.7)$ ]] || error "Valid MySQL versions: 5.5 - 5.6 - 5.7"