<Precedenti | Contenuti | Succ.>
Opzioni
read supporta le seguenti opzioni:
Tabella 28-1: Opzioni di lettura
Opzione Descrizione
Opzione Descrizione
-a schieramento Assegna l'input a schieramento, a partire dall'indice zero. Noi
tratteremo gli array nel Capitolo 35.
-d delimitatore Il primo carattere nella stringa delimitatore è utilizzato per
indica la fine dell'input, anziché un carattere di nuova riga.
-e Utilizzare Readline per gestire l'input. Ciò consente di modificare l'input allo stesso modo della riga di comando.
-i stringa Usa il stringa come risposta predefinita se l'utente preme semplicemente
Invio. Richiede il -e opzione.
-n num Leggi num caratteri di input, anziché un'intera riga.
-p pronto Visualizza un prompt per l'input utilizzando la stringa pronto.
-r Modalità Raw. Non interpretare i caratteri barra rovesciata come caratteri di escape.
-s Modalità silenziosa. Non visualizza i caratteri sullo schermo mentre vengono digitati. Questa opzione è utile quando si inseriscono password e altre informazioni riservate.
-t secondo Timeout. Termina l'input dopo secondo. read restituisce a
stato di uscita diverso da zero se un input scade.
-u fd Utilizza l'input dal descrittore di file fd, anziché l'input standard.
Utilizzando le varie opzioni, possiamo fare cose interessanti con read. Ad esempio, con
Opzione -p, possiamo fornire una stringa di richiesta:
#! / Bin / bash
# read-single: legge più valori nella variabile predefinita read -p "Inserisci uno o più valori > "
echo "RISPOSTA = '$RISPOSTA'"
#! / Bin / bash
# read-single: legge più valori nella variabile predefinita read -p "Inserisci uno o più valori > "
echo "RISPOSTA = '$RISPOSTA'"
Grazie alla -t e -s opzioni possiamo scrivere uno script che legge l'input "segreto" e scade se l'input non viene completato entro un tempo specificato:
#! / Bin / bash
# read-secret: inserisci una passphrase segreta
se letto -t 10 -sp "Inserisci la passphrase segreta > " secret_pass; quindi echo -e "\nPassphrase segreta = '$secret_pass'"
altro
echo -e "\nTimeout dell'input" >&2 exit 1
fi
#! / Bin / bash
# read-secret: inserisci una passphrase segreta
se letto -t 10 -sp "Inserisci la passphrase segreta > " secret_pass; quindi echo -e "\nPassphrase segreta = '$secret_pass'"
altro
echo -e "\nTimeout dell'input" >&2 exit 1
fi
Lo script richiede all'utente una passphrase segreta e attende 10 secondi per l'inserimento. Se l'inserimento non viene completato entro il tempo specificato, lo script termina con un errore. Poiché
Se è inclusa l'opzione -s, i caratteri della passphrase non vengono visualizzati sul display durante la digitazione.
È possibile fornire all'utente una risposta predefinita utilizzando -e e -i opzioni insieme:
#! / Bin / bash
# read-default: fornisce un valore predefinito se l'utente preme il tasto Invio. read -e -p "Qual è il tuo nome utente?" -i $USER
echo "Hai risposto: '$REPLY'"
#! / Bin / bash
# read-default: fornisce un valore predefinito se l'utente preme il tasto Invio. read -e -p "Qual è il tuo nome utente?" -i $USER
echo "Hai risposto: '$REPLY'"
In questo script, chiediamo all'utente di immettere il suo nome utente e di utilizzare la variabile di ambiente UTENTE per fornire un valore predefinito. Quando lo script viene eseguito, visualizza la stringa predefinita e se l'utente preme semplicemente il tasto Invio, read assegnerà la stringa predefinita al REPLY variabile.
[io@linuxbox~]$ lettura predefinita Qual è il tuo nome utente? me Hai risposto: 'me'
[io@linuxbox~]$ lettura predefinita Qual è il tuo nome utente? me Hai risposto: 'me'