你怎么能在bash中运行一个命令直到成功

我有一个脚本,想要询问用户的一些信息,脚本不能继续,直到用户填写此信息。 以下是我尝试将一个命令放入一个循环来达到这个目的,但是由于某种原因它不起作用。

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 

但我似乎无法得到它的工作。

 until passwd do echo "Try again" done 

你需要testing$? 相反,这是上一个命令的退出状态。 如果一切正常,则passwd退出,如果passwd更改失败,则为非零(密码错误,密码不匹配等)

 passwd while [ $? -ne 0 ]; do passwd done 

用你的反拨版本,你可以比较passwd的输出,比如Enter passwordconfirm password等等。

为了详细说明@Marc B的答案,

 $ passwd $ while [ $? -ne 0 ]; do !!; done 

是做同样的事情,不是特定的命令的好方法。

 while [ -n $(passwd) ]; do echo "Try again"; done; 

你可以使用无限循环

 while true do read -p "Enter password" passwd case "$passwd" in <some good condition> ) break;; esac done 

试试bash函数'read'

 echo -n "please confirm to continue (Y/n) " read yn case $yn in do the rest ;) esac