%20%C2%A1Por%20favor%20ayuda!.png)
¿Qué he hecho mal aquí? Porque cuando ejecuto mi script y lo detengo después de configurar la variable, dice que tengo una variable incorrecta.
qmail.script: 36: read: : bad variable name.
La ayuda sería muy apreciada.
unset PASSWORD
unset CHARCOUNT
echo
echo -n "Please Enter a Password For VqAdmin, Roundcube and QmailAdmin.
Password: "
stty echo
CHARCOUNT=0
while IFS= read "$PROMPT" -p -r -s -n
do
#Enter - accept password
if [[ $CHAR == $'\0' ]] ; then
break
fi
#Backspace
if [[ $CHAR == $'\177' ]] ; then
if [ $CHARCOUNT -gt 0 ] ; then
CHARCOUNT=$((CHARCOUNT-1))
PROMPT=$'\b \b'
PASSWORD="${PASSWORD%?}"
else
PROMPT=''
fi
else
CHARCOUNT=$((CHARCOUNT+1))
PROMPT='*'
PASSWORD=$CHAR
fi
done
stty echo
Respuesta1
Supongo que no estás mostrando todo el código, al igual que line 36
la read
declaración del fragmento que publicaste.
La read
afirmación es errónea. En mi humilde opinión te refieres
read -p "$PROMPT" -r -s -n1 CHAR
$PROMPT
es el parámetro para-p
, ya sea imprimiendo un '*' o nada en la entrada.-n
También necesita un parámetro que indique cuántos caracteres leer a la vez.- La variable
$CHAR
se usa más tarde, pero nunca es asignada porread
También $PASSWORD
contendrá solo el último carácter, ya que olvidó concatenar: PASSWORD=$CHAR
debería ser más bien
PASSWORD+=$CHAR
o
PASSWORD=${PASSWORD}${CHAR}
Con estas correcciones, el código hace lo que creo que debe hacer: presentar una solicitud de contraseña "destacada".
Solicite aquí el fragmento de código completo y corregido
unset PASSWORD
unset CHARCOUNT
echo
echo -n "Please Enter a Password For VqAdmin, Roundcube and QmailAdmin.
Password: "
stty echo
CHARCOUNT=0
while IFS= read -p "$PROMPT" -r -s -n1 CHAR
do
#Enter - accept password
if [[ $CHAR == $'\0' ]] ; then
break
fi
#Backspace
if [[ $CHAR == $'\177' ]] ; then
if [ $CHARCOUNT -gt 0 ] ; then
CHARCOUNT=$((CHARCOUNT-1))
PROMPT=$'\b \b'
PASSWORD="${PASSWORD%?}"
else
PROMPT=''
fi
else
CHARCOUNT=$((CHARCOUNT+1))
PROMPT='*'
PASSWORD+=$CHAR
fi
done
A juzgar por su comentario, usted no escribió este código usted mismo (en su totalidad) (?) y tiene problemas para entenderlo. No te explicaré línea por línea lo que hace. Lo siento. Le sugiero que lea la web y regrese con preguntas específicas si surgen. Una buena explicación de read
sus opciones es, por ejemplo.dado aquí.
Las introducciones generales a la programación bash se pueden encontrar, por ejemplo, en