Input dell’utente negli script
Fa parte della sezione Fondamenti del percorso Terminal di Coddy. Lezione 69 di 82.
Le variabili sono utili, ma a volte vuoi che il tuo script chieda all’utente delle informazioni mentre è in esecuzione. Il comando read mette in pausa lo script e attende che l’utente digiti qualcosa, quindi memorizza l’input in una variabile.
Ecco come funziona:
#!/bin/bash
echo "What is your name?"
read name
echo "Hello, $name!"Quando questo script viene eseguito, stampa la domanda, attende che l’utente digiti il proprio nome e prema Invio, quindi gli dà il benvenuto. Il comando read prende ciò che l’utente digita e lo memorizza nella variabile name.
Puoi rendere il prompt più pulito usando il flag -p, che combina il messaggio del prompt e l'input sulla stessa riga:
#!/bin/bash
read -p "Enter your name: " name
echo "Hello, $name!"Questo visualizza Enter your name: e attende l'input sulla stessa riga, risultando più curato. Il flag -p accetta il testo del prompt come argomento, seguito dal nome della variabile in cui memorizzare l'input.
L'input dell'utente rende gli script interattivi e adattabili. Invece di inserire i valori direttamente nel codice, puoi scrivere uno script che funziona in modo diverso in base a ciò che l'utente fornisce ogni volta che lo esegue.
Sfida
FacileCrea uno script shell chiamato greeter.sh che chieda all'utente qual è il suo colore preferito e poi mostri un messaggio usando la sua risposta.
Lo script dovrebbe:
- Iniziare con la riga shebang (
#!/bin/bash) - Usare
readcon il flag-pper mostrare il prompt:What is your favorite color? - Memorizzare la risposta in una variabile chiamata
color - Usare
echoper stampare:Nice! [color] is a great color!(dove [color] è la risposta dell'utente)
Rendi eseguibile lo script, poi eseguilo usando blue come risposta. Questo terminale non è interattivo: non può fermarsi e aspettare che tu digiti, quindi invia la risposta allo script tramite una pipe:
echo "blue" | ./greeter.shL'output dovrebbe essere:
Nice! blue is a great color!Nota: qui il prompt
What is your favorite color?non viene visualizzato.read -pstampa il suo prompt solo quando l'input proviene da una tastiera, mentre in questo caso proviene dalla pipe.
virgolette singole:
echo 'echo "Hello $name"' >> script.sh. Le virgolette singole impediscono alla shell di sostituire$namementre il file viene scritto, così lo script mantiene la variabile e la espande quando viene eseguito. Le virgolette doppie sostituirebbero immediatamente il valore.
Suggerimento: Crea lo script riga per riga usando
echocon il reindirizzamento. Usaread -p "What is your favorite color? " colorper mostrare il prompt e acquisire la risposta, poiecho "Nice! $color is a great color!"per visualizzare il risultato.
Provalo tu
Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di Fondamenti
4Cartelle
Creare una cartellaCopiare una cartellaSpostare e rinominare una cartellaEliminare una cartellaRiepilogo - Operazioni sulle cartelle7Contenuto dei file
Head e TailConteggio delle paroleComando SortComando UniqueNozioni di base su GrepGrep con opzioniRiepilogo - Detective del testo10Progetto di analisi dei log
Panoramica del progettoVisualizzare il file di log13Basi dello scripting shell
Che cos’è uno script shellCreare ed eseguire uno scriptVariabili negli scriptInput dell’utente negli scriptIstruzione ifCiclo forCiclo whileRiepilogo: indovina il numero2Navigazione
Stampare la directory di lavoroElencare i fileCambiare directoryPercorsi assoluti e relativiDirectory home e radiceRiepilogo - Trova la tua strada5Progetto di organizzazione delle foto
Panoramica del progettoCreazione della struttura8Reindirizzamento
Uscita standardSovrascrivere un fileAccodare a un fileIngresso standardErrore standardRiepilogo - Creare un log3File
Creare un fileLeggere un fileCopiare un fileSpostare e rinominare un fileEliminare un fileRipasso: operazioni sui file6Caratteri jolly e pattern
Il carattere jolly asteriscoIl carattere jolly punto interrogativoCaratteri jolly tra parentesi quadreCombinare i caratteri jollyRiepilogo - Operazioni selettive9Pipe
Che cos'è una pipeConcatenare due comandiConcatenare più comandiPipe con grepRiepilogo - pipeline dei datiEsercitati da solo: Playground Terminal