Guida per principianti a BASH

Benvenuto nella seconda parte della Guida per principianti alla serie BASH, che è unica in quanto è l'unico tutorial BASH scritto da un principiante per principianti.

I lettori di questa guida aumenteranno le loro conoscenze e, si spera, alla fine, saranno in grado di scrivere alcuni script abbastanza intelligenti.

L'ultima volta che abbiamo coperto creare il tuo primo script che mostrava semplicemente le parole "Hello World". Copre argomenti come editor di testo, come aprire una finestra di terminale, dove mettere i tuoi script, come visualizzare le parole "Hello World" e alcuni punti più precisi sui caratteri di escape come le virgolette ("").

Questa sezione riguarda i parametri di input. Ci sono altre guide che insegnano questo genere di cose ma troppo spesso saltano su cose di livello abbastanza basso e forse forniscono troppe informazioni.

Uno script di parametri aggiunge la personalizzazione

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

Come potremmo migliorare la sceneggiatura di "Hello World"?

Che ne dici di uno script che saluta la persona che lo esegue? Invece di dire "Ciao mondo", dirà "Ciao Gary", "Ciao Tim" o "Ciao Dolly".

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

Come creare un parametro

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

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

cd script

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

tocca salutami.sh

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

nano salutami.sh

Immettere il seguente testo all'interno di nano:

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

premere CTRL e oh per salvare il file e poi CTRL e X per chiudere il file.

Script Bash di base di Linux con parametri

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

sh salutami.sh Tim

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

Linux esegue script di base con parametri

La prima riga ha la riga #!/bin/bash che viene utilizzata per identificare il file come script bash.

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

Il $@ si espande per visualizzare ogni parametro immesso insieme al nome dello script. Quindi se hai digitato "sh greetme.sh tim" le parole "hello tim" verrebbero visualizzate. Se hai digitato "greetme.sh tim smith", verranno visualizzate le parole "hello tim smith".

Utilizzo dei comandi Echo

Potrebbe essere carino per lo script greetme.sh dire semplicemente ciao usando solo il nome. Nessuno dice "Ciao Gary Newell" quando incontra qualcuno, ma potrebbero dire "Ciao Gary", però.

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

nano salutami.sh

Modificare lo script in modo che legga come segue:

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

Salva lo script premendo CTRL e oh e poi uscire premendo CTRL e X.

Script Linux Bash con parametro individuale

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

sh salutami.sh gary newell

Quando esegui lo script, dirà semplicemente "Ciao Gary" (o, si spera, "ciao" e qualunque sia il tuo nome).

Linux esegue lo script Bash con un singolo parametro

L'1 dopo il simbolo $ dice fondamentalmente al comando echo, usa il primo parametro. Se sostituisci $ 1 con $ 2, verrà visualizzato "ciao newell" (o qualunque sia il tuo cognome). Puoi anche aggiungere $2 dopo $1 per ottenere il nome completo.

Script Linux Bash con più parametri

Eseguendolo con più di un parametro li visualizzerà nei posti corrispondenti all'ordine in cui sono stati inseriti.

Script di esecuzione Linux con più parametri

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

Come visualizzare il numero di parametri utilizzati

È possibile visualizzare e gestire il numero di parametri effettivamente inseriti e i tutorial successivi ti mostreranno come utilizzare il conteggio dei parametri per scopi di convalida.

Per visualizzare il numero di parametri immessi, aprire lo script greetme.sh (nano greetme.sh) e modificare il testo come segue:

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

premere CTRL e oh per salvare lo script e CTRL e X per uscire da nano.

Parametri di conteggio degli script di Linux Bash

Il $# sulla 2a riga mostra il numero di parametri inseriti.

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

Linux esegue i parametri di conteggio dello script bash

Dichiarazioni eco vs. Parametri di input

Il vero utilizzo delle istruzioni echo è fornire un output dettagliato e significativo all'utente. Se riesci a immaginare di voler fare qualcosa di complicato che implichi una seria elaborazione di numeri e manipolazione di file/cartelle, sarebbe utile mostrare all'utente cosa sta accadendo in ogni fase del modo.

Al contrario, i parametri di input rendono il tuo script interattivo. 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 alcuni altri parametri di input utili che è una buona idea conoscere e li includerò tutti in un frammento di codice.

Apri il tuo script greetme.sh e modificalo come segue:

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

premere CTRL e oh per salvare il file e CTRL e X uscire.

Informazioni aggiuntive sullo script Linux Bash

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

sh salutami.sh 

Questa volta lo script mostra quanto segue:

nome file: welcome.sh
ID processo: 18595

hai inserito 2 nomi
ciao Gary Newell
Script di esecuzione di Linux Bash con informazioni aggiuntive

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

Il $$ sulla seconda riga mostra l'ID del processo dello script che stai eseguendo. Perché è utile? Se stai eseguendo uno script in primo piano, puoi annullarlo semplicemente premendo CTRL e C. Se hai eseguito lo script in background e ha iniziato a eseguire il ciclo e a fare la stessa cosa più e più volte o ha iniziato a causare danni al tuo sistema, dovresti eliminarlo.

Per terminare uno script in esecuzione in background, è necessario l'ID processo dello script. Non sarebbe bello se lo script fornisse l'ID del processo come parte del suo output? (sui comandi ps e kill)

Per concludere...

Infine, prima di concludere con questo argomento, è importante discutere dove va a finire l'output. Ogni volta che lo script è stato eseguito fino a quel momento, l'output è stato visualizzato sullo schermo.

È abbastanza comune che l'output dello script venga scritto in un file di output. Per fare ciò, esegui lo script come segue:

sh salutami.sh gary > salutami.log

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

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

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