programas - que es bash en linux
¿Cómo se puede ejecutar un comando en bash hasta el éxito (6)
Tengo un script y quiero pedirle al usuario cierta información, el script no puede continuar hasta que el usuario complete esta información. El siguiente es mi intento de poner un comando en un bucle para lograr esto, pero no funciona por alguna razón.
echo "Please change password"
while passwd
do
echo "Try again"
done
He intentado muchas variaciones del ciclo while:
while `passwd`
while [[ "`passwd`" -gt 0 ]]
while [ `passwd` -ne 0 ]]
# ... And much more
Pero parece que no puedo hacer que funcione.
Necesita probar $?
en cambio, que es el estado de salida del comando anterior. passwd
sale con 0 si todo funcionó bien y no es cero si el cambio de contraseña falló (contraseña incorrecta, desajuste de contraseña, etc.)
passwd
while [ $? -ne 0 ]; do
passwd
done
Con tu versión de contratiempo, estás comparando la salida de passwd, que sería como Enter password
y confirm password
y cosas por el estilo.
Para profundizar en la respuesta de @Marc B,
$ passwd
$ while [ $? -ne 0 ]; do !!; done
Es una buena manera de hacer lo mismo que no es específico del comando.
Prueba la función bash ''leer''
echo -n "please confirm to continue (Y/n) "
read yn
case $yn in
do the rest ;)
esac
puedes usar un bucle infinito
while true
do
read -p "Enter password" passwd
case "$passwd" in
<some good condition> ) break;;
esac
done
until passwd
do
echo "Try again"
done
while [ -n $(passwd) ]; do
echo "Try again";
done;