【发布时间】:2017-03-23 15:07:31
【问题描述】:
我想解析用户输入是否为整数,并强制他这样做。第一次 (iquant) 运行 chkip() 有效,第二次 (idays),我立即得到:“错误:不是数字。请重试。”然后新的输入起作用。我在break 之前取消了ipn,所以有什么关系?
chkip()
{
ipn=$1
while true;
do
if [[ "$ipn" =~ ^[0-9]+$ ]] ; then
unset ipn
break
else
echo "Error: Not a number. Please retry"
read ipn
fi
done
}
echo "Please enter the name of the Set:"
read ap
echo "How much keys do you want to create [NUMBER]:"
read iquant
chkip $iquant
echo "How often do you want to change the Keys? [DAYS] ?:"
read idays
chkip $idayz
【问题讨论】:
-
您可能想要引用这些扩展(
"$1"、"$iquant"等),并考虑set -u在尝试使用未设置的变量时出现错误。 -
也许您还应该添加一个返回值,因为更正后
iquant将包含旧值,ipn将超出范围。 -
欢迎来到stackoverflow! +1 包括完整、独立的源代码、预期结果和实际结果。这使问题清晰、明确且易于回答和验证。