Skip to main content

Guida per principianti A BASH - Parametri di input

Corso sugli script bash parte 01 - introduzione (Giugno 2025)

Corso sugli script bash parte 01 - introduzione (Giugno 2025)
Anonim

Benvenuti nella seconda parte della Guida per principianti Alla serie BASH, unica nel suo genere, è l'unico tutorial BASH scritto da un principiante per principianti.

I lettori di questa guida svilupperanno le loro conoscenze mentre costruisco le mie conoscenze e speriamo che alla fine di tutto ciò saremo in grado di scrivere script abbastanza intelligenti.

La scorsa settimana ho coperto la creazione del tuo primo script che mostrava semplicemente le parole "Hello World". Riguarda argomenti come editor di testo, come aprire una finestra di terminale, dove mettere gli script, come visualizzare le parole "Hello World" e alcuni punti più fini sui caratteri di escape come le virgolette ("").

Questa settimana parlerò dei parametri di input. Ci sono altre guide che insegnano questo genere di cose, ma trovo che saltino in qualcosa di abbastanza basso livello e forse forniscono troppe informazioni.

Cos'è un parametro?

Nello script "Hello World" dell'ultimo tutorial era tutto molto statico. La sceneggiatura non ha fatto davvero molto.

Come potremmo migliorare la sceneggiatura di "Hello World"?

Che dire di uno script che saluta la persona che lo gestisce? Invece di dire "Hello World", dirà "Hello Gary", "Hello Tim" o "Hello Dolly".

Senza la possibilità di accettare i parametri di input avremmo bisogno di scrivere tre script "hellogary.sh", "hellotim.sh" e "hellodolly.sh".

Consentendo al nostro script di leggere i parametri di input, possiamo usare uno script per salutare chiunque.

Per farlo, apri una finestra di terminale (CTRL + ALT + T) e vai alla cartella degli script digitando quanto segue: (sul comando cd)

script cd

Creare un nuovo script chiamato greetme.sh digitando quanto segue: (sul comando touch)

tocca greetme.sh

Apri lo script nel tuo editor preferito digitando quanto segue: (sul comando nano)

nano greetme.sh

Inserisci il seguente testo all'interno di nano:

#! / bin / bash echo "ciao $ @"

Premere CTRL e O per salvare il file e quindi CTRL e X per chiudere il file.

Per eseguire lo script, inserisci quanto segue nella riga di comando sostituendo con il tuo nome.

sh greetme.sh

Se eseguo lo script con il mio nome, visualizza le parole "Ciao Gary".

La prima riga ha la linea #! / Bin / bash che viene usata per identificare il file come uno script bash.

La seconda riga usa l'istruzione echo per echeggiare la parola ciao e poi c'è la strana notazione $ @. (sul comando echo)

$ @ Si espande per visualizzare tutti i parametri immessi insieme al nome dello script. Quindi se hai digitato "sh greetme.sh tim" verrebbero visualizzate le parole "ciao tim". Se hai digitato "greetme.sh tim smith", verranno visualizzate le parole "ciao tim smith".

Potrebbe essere bello per lo script greetme.sh solo dire ciao usando solo il primo nome. Nessuno dice "ciao gary newell" quando loro mi incontrano, loro potrebbero dire "ciao gary" sebbene.

Cambiamo lo script in modo che utilizzi solo il primo parametro. Apri lo script greetme.sh in nano digitando quanto segue:

nano greetme.sh

Cambia lo script in modo che legga come segue:

#! / bin / bash echo "ciao $ 1"

Salvare lo script premendo CTRL e O e quindi uscire premendo CTRL e X.

Esegui lo script come mostrato di seguito (sostituisci il mio nome con il tuo):

sh greetme.sh gary newell

Quando esegui lo script, dovrai semplicemente pronunciare "ciao gary" (o, si spera, "ciao" e qualunque sia il tuo nome.

L'1 dopo il simbolo $ dice in pratica al comando echo, usa il primo parametro. Se sostituisci $ 1 con $ 2, visualizzerai "ciao newell" (o qualunque sia il tuo cognome).

Per inciso, se hai sostituito $ 2 con $ 3 e hai eseguito lo script con solo 2 parametri, l'output sarebbe semplicemente "Ciao".

È possibile visualizzare e gestire il numero di parametri effettivamente inseriti e nei tutorial successivi mostrerò come utilizzare il conteggio dei parametri per scopi di validazione.

Per visualizzare il numero di parametri inseriti, apri lo script greetme.sh (nano greetme.sh) e modifica il testo come segue:

#! / bin / bash echo "hai inserito $ # nomi" echo "ciao $ @"

Premere CTRL e O per salvare lo script e CTRL e X per uscire da nano.

$ # Sulla seconda riga mostra il numero di parametri inseriti.

Finora tutto questo è stato nuovo ma non molto utile. Chi ha bisogno di uno script che mostra semplicemente "buongiorno"?

L'utilizzo reale delle istruzioni echo consiste nel fornire all'utente un output dettagliato e significativo. Se riesci a immaginare di voler fare qualcosa di complicato che implichi un serio scricchiolio dei numeri e la manipolazione di file / cartelle, sarebbe utile mostrare all'utente ciò che sta accadendo in ogni fase del percorso.

Al contrario, i parametri di input rendono interattivo lo script. Senza parametri di input avresti bisogno di dozzine di script che fanno tutti cose molto simili ma con nomi leggermente diversi.

Con tutto questo in mente ci sono altri parametri di input utili che è una buona idea conoscere e li includerò tutti in un frammento di codice.

Apri lo script greetme.sh e modificalo come segue:

#! / bin / bash echo "Nome file: $ 0" echo "ID processo: $$" echo "---------------------------- --- "echo" hai inserito $ # nomi "echo" ciao $ @ "

Premere CTRL e O per salvare il file e CTRL e X per uscire.

Ora esegui lo script (sostituisci con il tuo nome).

sh greetme.sh

Questa volta lo script visualizza quanto segue:

Nome file: greetme.sh ID processo: 18595 ------------------------------ hai inserito 2 nomi ciao gary newell

Lo $ 0 sulla prima riga dello script mostra il nome dello script che stai utilizzando.Si noti che è dollaro zero e non dollaro o.

Il $$ sulla seconda riga mostra l'id di processo dello script in esecuzione. Perché è utile? Se si sta eseguendo uno script in primo piano, è possibile annullarlo premendo semplicemente CTRL e C. Se si è eseguito lo script in background e si è avviato il ciclo e si è ripetuta la stessa operazione ripetutamente o ha iniziato a causare danni al sistema, sarebbe necessario ucciderlo.

Per uccidere uno script in esecuzione in background è necessario l'id di processo dello script. Non sarebbe bello se lo script avesse dato l'id del processo come parte del suo output. (circa i comandi ps e kill)

Finalmente, prima di concludere questo argomento, volevo discutere su dove andasse l'output. Ogni volta che lo script ha eseguito fino ad ora l'output è stato visualizzato sullo schermo.

È abbastanza comune che l'output dello script venga scritto su un file di output. Per fare questo, esegui il tuo script come segue:

sh greetme.sh gary> greetme.log

Il simbolo> nel comando precedente restituisce il testo "ciao gary" in un file chiamato greetme.log.

Ogni volta che si esegue lo script con il simbolo> sovrascrive il contenuto del file di output. Se preferisci aggiungere al file, sostituisci> con >>.

Sommario

Ora dovresti essere in grado di scrivere del testo sullo schermo e accettare i parametri di input.