Menu
Coddy logo textTech

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.

challenge icon

Sfida

Facile

Crea 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:

  1. Iniziare con la riga shebang (#!/bin/bash)
  2. Usare read con il flag -p per mostrare il prompt: What is your favorite color?
  3. Memorizzare la risposta in una variabile chiamata color
  4. Usare echo per 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.sh

L'output dovrebbe essere:

Nice! blue is a great color!

Nota: qui il prompt What is your favorite color? non viene visualizzato. read -p stampa 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 $name mentre 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 echo con il reindirizzamento. Usa read -p "What is your favorite color? " color per mostrare il prompt e acquisire la risposta, poi echo "Nice! $color is a great color!" per visualizzare il risultato.

Provalo tu

Terminale
quiz iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Fondamenti

Esercitati da solo: Playground Terminal