para una solución que funciona sin bash o ciertas características de read
puedes usar stty
para deshabilitar el eco
stty_orig=$(stty -g)
stty -echo
read password
stty $stty_orig
Simplemente proporcione -s a su llamada de lectura así:
$ read -s PASSWORD
$ echo $PASSWORD
Actualizar
En caso de que quiera volverse elegante, emita un *
para cada carácter que escriben, puedes hacer algo como esto (usando el read -s
de andreas solución):
unset password;
while IFS= read -r -s -n1 pass; do
if [[ -z $pass ]]; then
echo
break
else
echo -n '*'
password+=$pass
fi
done
Sin ser fantasioso
echo "Please enter your username";
read username;
echo "Please enter your password";
stty -echo
read password;
stty echo