GNU/Linux >> Linux Esercitazione >  >> Linux

Bash Beginner Series #3:Passare argomenti agli script Bash

Gli argomenti possono essere utili, specialmente con Bash!

Finora, hai imparato come utilizzare le variabili per rendere i tuoi script bash dinamici e generici, quindi è sensibile a vari dati e diversi input dell'utente.

In questo tutorial imparerai come passare variabili a uno script bash dalla riga di comando.

Acquista l'eBook "Impara Bash velocemente".

Passaggio di argomenti a uno script di shell bash

Il seguente script count_lines.sh produrrà il numero totale di righe che esistono in qualsiasi file immesso dall'utente:

#!/bin/bash

echo -n "Please enter a filename: "
read filename
nlines=$(wc -l < $filename)

echo "There are $nlines lines in $filename"

Ad esempio, l'utente può inserire il file /etc/passwd e lo script sputerà il numero di righe come risultato:

Questo script funziona bene; tuttavia, c'è un'alternativa molto migliore!

Invece di richiedere all'utente il nome del file, possiamo fare in modo che l'utente passi semplicemente il nome del file come argomento della riga di comando durante l'esecuzione dello script come segue:

./count_lines.sh /etc/passwd

È possibile accedere al primo argomento bash (noto anche come parametro posizionale) all'interno del proprio script bash utilizzando $1 variabile.

Quindi, nello script count_lines.sh, puoi sostituire la variabile del nome del file con $1 come segue:

#!/bin/bash

nlines=$(wc -l < $1)
echo "There are $nlines lines in $1"

Si noti che mi sono anche sbarazzato del comando read e first echo poiché non sono più necessari!

Infine, puoi eseguire lo script e passare qualsiasi file come argomento:

./count_lines.sh    /etc/group
There are 73 lines in /etc/group

Passaggio di più argomenti a uno script di shell bash

Puoi passare più di un argomento al tuo script bash. In generale, ecco la sintassi per passare più argomenti a qualsiasi script bash:

script.sh arg1 arg2 arg3  …

Il secondo argomento sarà referenziato da $2 variabile, il terzo argomento è referenziato da $3 , .. ecc.

Il $0 variabile contiene il nome del tuo script bash nel caso te lo stessi chiedendo!

Ora possiamo modificare il nostro count_lines.sh bash script in modo che possa contare le righe di più di un file:

#!/bin/bash

n1=$(wc -l < $1)
n2=$(wc -l < $2)
n3=$(wc -l < $3)

echo "There are $n1 lines in $1"
echo "There are $n2 lines in $2"
echo "There are $n3 lines in $3"

Ora puoi eseguire lo script e passare tre file come argomenti allo script bash:

Come puoi vedere, lo script emette il numero di righe di ciascuno dei tre file; e inutile dire che l'ordine delle argomentazioni conta, ovviamente.

Diventare creativi con gli argomenti nella shell Bash

Ci sono un sacco di comandi Linux là fuori.

Alcuni di essi sono un po' complicati in quanto possono avere una sintassi lunga o una lunga serie di opzioni che è possibile utilizzare.

Fortunatamente, puoi usare gli argomenti bash per trasformare un hard comando in un compito abbastanza facile!

Per dimostrarlo, dai un'occhiata al seguente find.sh script bash:

#!/bin/bash

find / -iname $1 2> /dev/null

È uno script molto semplice che può rivelarsi molto utile! Puoi fornire qualsiasi nome di file come argomento allo script e mostrerà la posizione del tuo file:

Vedi come ora è molto più semplice che digitare l'intero comando trova! Questa è una prova che puoi usare argomenti per trasformare qualsiasi comando lungo e complicato in Linux in un semplice script bash.

Se ti stai chiedendo del 2> /dev/null , significa che qualsiasi messaggio di errore (come file non accessibile) non verrà visualizzato sullo schermo. Suggerisco di leggere il reindirizzamento stderr in Linux per approfondire le conoscenze su questo argomento.

Suggerimento bonus:variabili speciali nella shell Bash

Bash ha molte variabili speciali integrate che sono abbastanza utili e sono disponibili a tua disposizione.

La tabella seguente evidenzia le variabili bash integrate speciali più comuni:

Variabile speciale Descrizione
$0 Il nome dello script bash.
$1, $2...$n Gli argomenti dello script bash.
$$ L'ID del processo della shell corrente.
$# Il numero totale di argomenti passati allo script.
[email protected] Il valore di tutti gli argomenti passati allo script.
$? Lo stato di uscita dell'ultimo comando eseguito.
$! L'ID del processo dell'ultimo comando eseguito.

Per vedere queste variabili speciali in azione; dai un'occhiata al seguente variables.sh script bash:

#!/bin/bash

echo "Name of the script: $0"
echo "Total number of arguments: $#"
echo "Values of all the arguments: [email protected]"

Ora puoi passare tutti gli argomenti che desideri ed eseguire lo script:

Bene, questo ci porta alla fine di questo capitolo. Spero che ora ti rendi conto di quanto possano essere potenti e utili gli argomenti bash.

Hai bisogno di un po' di pratica, scarica questo PDF ed esercitati a passare argomenti per bash script con semplici sfide di scripting. Sono incluse anche le loro soluzioni.

Bash Capitolo 3 Domande pratiche Problemi e la loro soluzione per mettere in pratica ciò che hai appena appreso in questo capitolo Bash-Capitolo-3-Domande pratiche-Linux-Handbook.pdf30 KB

Dopodiché, dai un'occhiata al prossimo capitolo in cui ti mostrerò che puoi creare e utilizzare array nei tuoi script bash.


Linux
  1. Gestione degli errori negli script Bash

  2. Aggiunta di argomenti e opzioni ai tuoi script Bash

  3. Bash Beginner Series #9:Utilizzo delle funzioni in Bash

  4. Come evidenziare gli script Bash in Vim?

  5. Esegui il comando bash sulla pipeline jenkins

Bash Beginner Series #2:Comprensione delle variabili nello scripting di Bash Shell

Bash Beginner Series n. 1:crea ed esegui il tuo primo script Bash Shell

Bash Beginner Series #5:Utilizzo di operatori aritmetici negli script Bash

Bash Beginner Series #4:Utilizzo di array in Bash

Bash Beginner Series #6:Operazioni con le stringhe in Bash

Bash Beginner Series #10:Automazione con Bash