你怎么能在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 password
和confirm 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