GNU/Linux >> Linux Esercitazione >  >> Linux

Script di shell per principianti - Come scrivere script Bash in Linux

Lo scripting della shell è una parte importante dell'automazione dei processi in Linux. Lo scripting ti aiuta a scrivere una sequenza di comandi in un file e quindi eseguirli.

Questo ti fa risparmiare tempo perché non devi scrivere determinati comandi ancora e ancora. Puoi eseguire le attività quotidiane in modo efficiente e persino programmarle per l'esecuzione automatica.

Puoi anche impostare determinati script da eseguire all'avvio, ad esempio la visualizzazione di un messaggio particolare all'avvio di una nuova sessione o l'impostazione di determinate variabili di ambiente.

Le applicazioni e gli usi dello scripting sono numerosi, quindi tuffiamoci.

In questo articolo imparerai:

  1. Cos'è una shell bash?
  2. Cos'è uno script bash e come lo identifichi?
  3. Come creare il tuo primo script bash ed eseguirlo.
  4. La sintassi di base degli script di shell.
  5. Come visualizzare gli script pianificati di un sistema.
  6. Come automatizzare gli script pianificando tramite cron job.

Il modo migliore per imparare è esercitarsi. Ti incoraggio vivamente a seguire usando Replit. Puoi accedere a una shell Linux in esecuzione in pochi minuti.

Introduzione a Bash Shell

La riga di comando di Linux è fornita da un programma chiamato shell. Nel corso degli anni, il programma shell si è evoluto per soddisfare varie opzioni.

Utenti diversi possono essere configurati per utilizzare shell diverse. Ma la maggior parte degli utenti preferisce rimanere con l'attuale shell predefinita. La shell predefinita per molte distribuzioni Linux è la GNU Bourne-Again Shell (bash). A Bash succede la shell Bourne (sh ).

Quando avvii per la prima volta la shell, utilizza uno script di avvio che si trova in .bashrc o .bash_profile file che consente di personalizzare il comportamento della shell.

Quando una shell viene utilizzata in modo interattivo, mostra un $ quando è in attesa di un comando dall'utente. Questo è chiamato prompt della shell.

[username@host ~]$

Se la shell è in esecuzione come root, il prompt viene modificato in # . Il prompt della shell del superutente è simile al seguente:

[root@host ~]#

Bash è molto potente in quanto può semplificare alcune operazioni difficili da eseguire in modo efficiente con una GUI. Ricorda che la maggior parte dei server non ha una GUI ed è meglio imparare a usare i poteri di un'interfaccia a riga di comando (CLI).

Cos'è uno script Bash?

Uno script bash è una serie di comandi scritti in un file. Questi vengono letti ed eseguiti dal programma bash. Il programma viene eseguito riga per riga.

Ad esempio, puoi navigare verso un determinato percorso, creare una cartella e generare un processo al suo interno usando la riga di comando.

Puoi eseguire la stessa sequenza di passaggi salvando i comandi in uno script bash ed eseguendolo. Puoi eseguire lo script un numero qualsiasi di volte.

Come si identifica uno script Bash?

Estensione del file di .sh .

In base alle convenzioni di denominazione, gli script bash terminano con un .sh . Tuttavia, gli script bash possono funzionare perfettamente senza sh estensione.

Gli script iniziano con un bash bang.

Gli script sono anche identificati con un shebang . Shebang è una combinazione di bash # e bang ! ha seguito il percorso della shell bash. Questa è la prima riga dello script. Shebang dice alla shell di eseguirla tramite bash shell. Shebang è semplicemente un percorso assoluto per l'interprete bash.

Di seguito è riportato un esempio della dichiarazione shebang.

#! /bin/bash

Il percorso del programma bash può variare. Vedremo più avanti come identificarlo.

Diritti di esecuzione

Gli script hanno diritti di esecuzione per l'utente che li esegue.

Un diritto di esecuzione è rappresentato da x . Nell'esempio seguente, il mio utente ha il rwx (lettura, scrittura, esecuzione) diritti per il file test_script.sh

Colore file

Gli script eseguibili vengono visualizzati in un colore diverso dal resto dei file e delle cartelle.

Nel mio caso, gli script con diritti di esecuzione vengono visualizzati in verde.

Come creare il tuo primo script Bash

Creiamo un semplice script in bash che produca Hello World .

Crea un file chiamato hello_world.sh

touch hello_world.sh

Trova il percorso della tua shell bash.

which bash

Nel mio caso, il percorso è /usr/bin/bash e lo includerò nello shebang.

Scrivi il comando.

Faremo echo "ciao mondo" alla console.

Il nostro script sarà simile a questo:

#! usr/bin/bash
echo "Hello World"

Modifica il file hello_world.sh utilizzando un editor di testo a tua scelta e aggiungi le righe precedenti al suo interno.

Fornisci i diritti di esecuzione al tuo utente.

Modifica i permessi del file e consenti l'esecuzione dello script utilizzando il comando seguente:

chmod u+x hello_world.sh

chmod modifica i diritti esistenti di un file per un particolare utente. Stiamo aggiungendo +x all'utente u .

Esegui lo script.

Puoi eseguire lo script nei seguenti modi:

./hello_world.sh

bash hello_world.sh .

Ecco l'output:

La sintassi di base dello scripting Bash

Proprio come qualsiasi altro linguaggio di programmazione, lo scripting bash segue una serie di regole per creare programmi comprensibili dal computer. In questa sezione studieremo la sintassi dello scripting bash.

Come definire le variabili

Possiamo definire una variabile usando la sintassi variable_name=value . Per ottenere il valore della variabile, aggiungi $ prima della variabile.

#!/bin/bash
# A simple variable example
greeting=Hello
name=Tux
echo $greeting $name

Tux è anche il nome della mascotte di Linux, il pinguino.

Espressioni aritmetiche

Di seguito sono riportati gli operatori supportati da bash per i calcoli matematici:

Operatore Utilizzo
+ aggiunta
- sottrazione
* moltiplicazione
/ divisione
** esponenziale
% modulo

Facciamo alcuni esempi.

Le espressioni numeriche possono anche essere calcolate e memorizzate in una variabile utilizzando la sintassi seguente:

var=$((expression))

Proviamo un esempio.

#!/bin/bash

var=$((3+9))
echo $var

Le frazioni non vengono calcolate correttamente utilizzando i metodi precedenti e troncate.

Per calcoli decimali , possiamo usare bc comando per ottenere l'output su un determinato numero di cifre decimali. bc (Bash Calculator) è un calcolatore da riga di comando che supporta il calcolo fino a un certo numero di punti decimali.

echo "scale=2;22/7" | bc

Dove scale definisce il numero di cifre decimali richieste nell'output.

Come leggere l'input dell'utente

A volte è necessario raccogliere l'input dell'utente ed eseguire operazioni pertinenti.

In bash, possiamo accettare l'input dell'utente usando read comando.

read variable_name

Per richiedere all'utente un messaggio personalizzato, usa il -p bandiera.

read -p "Enter your age" variable_name

Esempio:

#!/bin/bash

echo "Enter a numner"
read a

echo "Enter a numner"
read b

var=$((a+b))
echo $var

Operatori logici di confronto numerico

Il confronto viene utilizzato per verificare se le istruzioni restituiscono true o false . Possiamo utilizzare gli operatori mostrati di seguito per confrontare due affermazioni:

Operazione Sintassi Spiegazione
Uguaglianza num1 -eq num2 è num1 uguale a num2
Maggiore di uguale a num1 -ge num2 è num1 maggiore di uguale a num2
Maggiore di num1 -gt num2 è num1 maggiore di num2
Inferiore a num1 -le num2 è num1 minore di uguale a num2
Meno di num1 -lt num2 è num1 minore di num2
Diverso da num1 -ne num2 è num1 diverso da num2

Sintassi :

if [ conditions ]
    then
         commands
fi

Esempio :

Confrontiamo due numeri e troviamo la loro relazione:

read x
read y

if [ $x -gt $y ]
then
echo X is greater than Y
elif [ $x -lt $y ]
then
echo X is less than Y
elif [ $x -eq $y ]
then
echo X is equal to Y
fi

Uscita:

Dichiarazioni condizionali (processo decisionale)

Le condizioni sono espressioni che restituiscono un'espressione booleana (true o false ). Per verificare le condizioni, possiamo utilizzare if , if-else , if-elif-else e condizionali nidificati.

La struttura delle istruzioni condizionali è la seguente:

  • if...then...fi dichiarazioni
  • if...then...else...fi dichiarazioni
  • if..elif..else..fi
  • if..then..else..if..then..fi..fi.. (Condizionali nidificati)

Sintassi :

if [[ condition ]]
then
	statement
elif [[ condition ]]; then
	statement 
else
	do this by default
fi

Per creare confronti significativi, possiamo usare AND -a e OPPURE -o anche.

L'istruzione seguente si traduce in:If a è maggiore di 40 e b è inferiore a 6.

if [ $a -gt 40 -a $b -lt 6 ]

Esempio :Troviamo il tipo di triangolo leggendo le lunghezze dei suoi lati.

read a
read b
read c

if [ $a == $b -a $b == $c -a $a == $c ]
then
echo EQUILATERAL

elif [ $a == $b -o $b == $c -o $a == $c ]
then 
echo ISOSCELES
else
echo SCALENE

fi

Risultato :

Caso di prova n. 1

Caso di prova n. 2

Caso di prova n. 3

Ciclo e salto

I cicli For ti consentono di eseguire istruzioni un numero specifico di volte.

Looping con i numeri:

Nell'esempio seguente, il ciclo ripeti 5 volte.

#!/bin/bash

for i in {1..5}
do
    echo $i
done

Ciclo con stringhe:

Possiamo anche scorrere le stringhe.

#!/bin/bash

for X in cyan magenta yellow  
do
	echo $X
done

Ciclo mentre

Mentre i loop controllano una condizione e continuano fino a quando la condizione rimane true . È necessario fornire un'istruzione counter che incrementi il ​​contatore per controllare l'esecuzione del ciclo.

Nell'esempio seguente, (( i += 1 )) è l'istruzione contatore che incrementa il valore di i .

Esempio:

#!/bin/bash
i=1
while [[ $i -le 10 ]] ; do
   echo "$i"
  (( i += 1 ))
done

Lettura di file

Supponiamo di avere un file sample_file.txt come mostrato di seguito:

Possiamo leggere il file riga per riga e stampare l'output sullo schermo.

#!/bin/bash

LINE=1

while read -r CURRENT_LINE
	do
		echo "$LINE: $CURRENT_LINE"
    ((LINE++))
done < "sample_file.txt"

Risultato:

Come eseguire comandi con back tick

Se è necessario includere l'output di un comando complesso nello script, è possibile scrivere l'istruzione all'interno dei segni di spunta indietro.

Sintassi:

var=` commands `

Esempio :Supponiamo di voler ottenere l'output di un elenco di punti di montaggio con tmpfs a loro nome. Possiamo creare una dichiarazione come questa:df -h | grep tmpfs .

Per includerlo nello script bash, possiamo racchiuderlo in segni di spunta indietro.

#!/bin/bash

var=`df -h | grep tmpfs`
echo $var

Uscita:

Come ottenere argomenti per gli script dalla riga di comando

È possibile fornire argomenti allo script in esecuzione.

$@ rappresenta la posizione dei parametri, a partire da uno.

#!/bin/bash

for x in $@
do
    echo "Entered arg is $x"
done

Esegui in questo modo:

./script arg1 arg2

Come automatizzare gli script pianificando tramite cron Jobs

Cron è un'utilità di pianificazione dei lavori presente in sistemi simili a Unix. È possibile pianificare i lavori da eseguire quotidianamente, settimanalmente, mensilmente o in un'ora specifica del giorno. L'automazione in Linux si basa fortemente sui lavori cron.

Di seguito è riportata la sintassi per programmare i cron:

# Cron job example
* * * * * sh /path/to/script.sh

Qui, * rappresenta rappresenta rispettivamente minuto/i ora/i giorno/i mese/i giorno/i della settimana.

Di seguito sono riportati alcuni esempi di pianificazione dei lavori cron.

PROGRAMMA VALORE PIANIFICATO
5 0 * 8 * Alle 00:05 di agosto.
5 4 * * 6 Alle 04:05 di domenica.
0 22 * ​​* 1-5 Alle 22:00 di tutti i giorni della settimana dal lunedì al venerdì.

Puoi conoscere cron in dettaglio in questo post del blog.

Come controllare gli script esistenti in un sistema

Utilizzo di crontab

crontab -l elenca gli script già pianificati per un particolare utente.

Utilizzo del comando trova

Il find comando aiuta a individuare i file in base a determinati modelli. Poiché la maggior parte degli script termina con .sh , possiamo usare lo script di ricerca in questo modo:

find . -type f -name "*.sh"

Dove,

  • . rappresenta la directory corrente. Puoi modificare il percorso di conseguenza.
  • -type f indica che il tipo di file che stiamo cercando è un file di testo.
  • *.sh dice di abbinare tutti i file che terminano con .sh .

Se sei interessato a leggere in dettaglio il comando trova, controlla il mio altro post.

Conclusione

In questo tutorial abbiamo appreso le basi dello scripting della shell. Abbiamo esaminato esempi e sintassi che possono aiutarci a scrivere programmi significativi.

Qual è la tua cosa preferita che hai imparato da questo tutorial? Fammi sapere su Twitter!

Puoi leggere i miei altri post qui.

Vettore di lavoro creato da macrovector - www.freepik.com


Linux
  1. Scripting Linux:3 istruzioni per i cicli while in Bash

  2. Come analizzare Json con lo script della shell in Linux?

  3. Come verificare la conformità a Posix degli script della shell?

  4. Come confrontare le stringhe negli script di Bash Shell

  5. Come fare eco a una nuova riga negli script di Bash Shell

Scripting Bash:come scrivere dati su file di testo

Come utilizzare il comando Declare in Linux Bash Shell

Come utilizzare il comando echo negli script Bash in Linux

Come installare Linux Bash Shell su Windows 10

Bash Scripting:come generare e formattare il testo su Linux Shell

Come utilizzare Linux Bash Shell in Windows 10?