У меня есть этот скрипт Bash, который имеет базовый оператор if...else
, но скрипт, похоже, не правильно распознает значения и просто продолжает сценарий, когда он должен остановиться и показать ошибку.Использование плавающих точек в сценарии Bash
Я считаю, что это потому, что я использую число с плавающей точкой, и 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 , Снова я думаю, что это связано с тем, что значение является плавающим.
Любая помощь приветствуется.
Обратите внимание, что номера версий редко являются десятичными числами. 1.2 <1.10 и т. Д. – Biffen