Tente isto:
#!/bin/bash
unset password
prompt="Enter Password:"
while IFS= read -p "$prompt" -r -s -n 1 char
do
if [[ $char == $'#!/bin/bash
unset password
prompt="Enter Password:"
while IFS= read -p "$prompt" -r -s -n 1 char
do
if [[ $char == $'%pre%' ]]; then
break
fi
if [[ $char == $'7' ]]; then
prompt=$'\b \b'
password="${password%?}"
else
prompt='*'
password+="$char"
fi
done
echo " "
echo "Done. Password=$password"
' ]]; then
break
fi
if [[ $char == $'7' ]]; then
prompt=$'\b \b'
password="${password%?}"
else
prompt='*'
password+="$char"
fi
done
echo " "
echo "Done. Password=$password"
As opções do comando read são:
-p: Prompt string.
-r: Não use barra invertida como caractere de escape.
-s: modo silencioso, entradas não são ecoadas.
-n 1: Número de caracteres para entrada.
read
retorna 0
a menos que
seja encontrado e o caractere digitado pelo usuário seja colocado na variável char
IFS=
.
A parte read
limpa a variável IFS, o que garante que qualquer espaço ou caractere de tabulação digitado seja incluído na senha em vez de ser analisada por %code% .