我有一个脚本,想向用户询问一些信息,但在用户填写这些信息之前,脚本无法继续。下面是我尝试将一个命令放到一个循环中来实现这一点,但由于某些原因它不起作用:
echo "Please change password"
while passwd
do
echo "Try again"
done
我已经尝试了while循环的许多变体:
while `passwd`
while [[ "`passwd`" -gt 0 ]]
while [ `passwd` -ne 0 ]]
# ... And much more
但我似乎不能让它工作。
发布于 2011-03-11 22:48:26
until passwd
do
echo "Try again"
done
或
while ! passwd
do
echo "Try again"
done
发布于 2011-03-11 22:44:21
您需要改为测试$?
,它是前一个命令的退出状态。如果一切正常,passwd
将退出,返回0;如果密码更改失败(密码错误、密码不匹配等),则返回非零值。
passwd
while [ $? -ne 0 ]; do
passwd
done
对于您的反引号版本,您将比较passwd的输出,可能是Enter password
和confirm password
之类的东西。
发布于 2014-07-16 09:48:21
为了详细说明@Marc B的答案,
$ passwd
$ while [ $? -ne 0 ]; do !!; done
这是一种很好的方式来做同样的事情,而不是特定于命令。
https://stackoverflow.com/questions/5274294
复制相似问题