Devuelve el valor de los commands cuando se usa stdin?

Imaging estoy ejecutando el siguiente command:

echo "root:mypass" | chpasswd 

¿Cómo puedo get el código de retorno / código de error devuelto por chpasswd? ¿Es eso posible en este caso? Lo intenté

 RET = `echo "root:mypass" | chpasswd` 

pero esto me da solo "command no encontrado"?

¿El $? variable contiene el valor de retorno del último command. Podrías hacer esto:

 echo "root:passwd" | chpasswd RET=$? 

O testing directamente, por ejemplo

 echo "root:passwd" | chpasswd if [ "$?" -ne 0 ]; then echo "Failed" fi 

Si el valor de retorno no es importante, solo si tiene éxito o no, puede usar el command dentro de una statement if :

 if ! echo "root:mypass" | chpasswd; then # chpasswd failed fi 

O el más corto:

 echo "root:mypass" | chpasswd || cmd_to_run_if_chpasswd_failed 

Si lo entiendo bien, está tratando de cambiar el pase del usuario raíz usando solo una statement y presionando Enter sin confirmación del process.

Descubrí que su estado de count funciona correctamente si agrega un prefijo "sudo su".

 ~$ sudo su 

Teniendo en count que está intentando cambiar el pase del usuario raíz, debe saber cuál es el nombre de usuario raíz y debe registrarse correctamente. Puedes hacer esto con el command sudo su .

Entonces es suficiente con ejecutar el siguiente command reemplazando "raíz" con el nombre raíz actual, y "mi pase" con la contraseña deseada para este usuario (recuerde tomar una nota para probar este método):

 ~$ echo "root:mypass" | chpasswd 

Después de que pueda probar ingresar un command de salida e iniciar session con la nueva contraseña.