我有以下(大ksh脚本的一部分)
while [[ $? -ne 0 ]]
do
print -n "ENTER VALID HOST IP"
read IP
CHECK_IP $IP # CHECK_IP is afuntion that check if IP is valid and return 0 or 1
done
正如我们在美元看到的那样?总是等于0
所以我们不能要求IP
循环的目标是询问IP地址 并激活CHECK_IP函数以返回0或1
0表示有效IP
对于BAD IP1
但正如我在乞讨中所说的那样,我从来没有问过IP,因为$?总是0(在“while”之后)
所以我的问题
如何启用默认值1到$?所以我会开始循环或其他建议吗?
里带
答案 0 :(得分:2)
首先运行false
。
答案 1 :(得分:0)
$?是先前执行的命令的退出状态。一个人不能保证$?总是返回0。
上面的代码说'发生一些错误时,重复'。换句话说,$? -ne 0将保护/确保在某些命令成功执行时停止循环。
我不知道你的情况到底是什么。但我猜你有很多IP,其中很多都是不正确的。循环本身将检查这些IP,并在IP正确时退出。
最大的问题是您的代码是否能够进入循环。如果是这种情况,则使用while-do本身是不正确的。尝试do-while(我不知道这是否在你的shell中可用)。通过使用do-while,您将确保您的代码至少进入循环一次。