script que programas ejemplos ejecutar comandos comando bash command while-loop

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;