I have a script and want to ask the user for some information, the script cannot continue until the user fills in this information. The following is my attempt at putting a command into a loop to achieve this but it doesn't work for some reason.
echo "Please change password"
while passwd
do
echo "Try again"
done
I have tried many variations of the while loop:
while `passwd`
while [[ "`passwd`" -gt 0 ]]
while [ `passwd` -ne 0 ]]
# ... And much more
But I can't seem to get it to work.
To elaborate on @Marc B's answer,
Is nice way of doing the same thing that's not command specific.
You need to test
$?
instead, which is the exit status of the previous command.passwd
exits with 0 if everything worked ok, and non-zero if the passwd change failed (wrong password, password mismatch, etc...)With your backtick version, you're comparing passwd's output, which would be stuff like
Enter password
andconfirm password
and the like.you can use an infinity loop