Bash Scripting – Introduzione a Bash e Bash Scripting

Bash Scripting – Introduzione a Bash e Bash Scripting

Bash è un interprete della riga di comando o Unix Shell ed è ampiamente utilizzato nel sistema operativo GNU/Linux. È scritto da Brian Jhan Fox. Viene utilizzato come shell di accesso predefinita per la maggior parte delle distribuzioni Linux. Lo scripting viene utilizzato per automatizzare l'esecuzione delle attività in modo che gli esseri umani non debbano eseguirle individualmente. Lo scripting Bash è un ottimo modo per automatizzare diversi tipi di attività in un sistema. Gli sviluppatori possono evitare di eseguire attività ripetitive utilizzando lo scripting bash.

Lo scripting Bash supporta variabili, istruzioni condizionali e loop proprio come i linguaggi di programmazione. Di seguito sono riportate alcune delle applicazioni degli script Bash:

Tabella dei contenuti

Applicazioni degli script Bash:

  • Manipolazione di file
  • Esecuzione di attività di routine come l'operazione di backup
  • Automazione

I vantaggi dell'utilizzo degli script Bash sono riportati di seguito:

Vantaggi degli script Bash:

  • È semplice.
  • Aiuta a evitare di svolgere compiti ripetitivi
  • Facile da usare
  • Le attività eseguite di frequente possono essere automatizzate
  • Una sequenza di comandi può essere eseguita come un singolo comando.

Gli svantaggi degli script Bash sono riportati di seguito:

Svantaggi degli script Bash:

  • Qualsiasi errore durante la scrittura può costare caro.
  • Un nuovo processo lanciato per quasi ogni comando di shell eseguito
  • Velocità di esecuzione lenta
  • Problemi di compatibilità tra diverse piattaforme

Come scrivere script Bash?

Per scrivere uno script Bash seguiremo i passaggi:

  • Per prima cosa creeremo un file con l'estensione .sh.
  • Successivamente, annoteremo gli script bash al suo interno
  • Successivamente, forniremo l'autorizzazione all'esecuzione.

Per creare e scrivere un file con l'estensione .sh possiamo usare gedit editor di testo. Il comando sarà:

gedit scriptname.sh 

La prima riga del nostro file di script sarà:

#!/bin/bash 

Questo dirà al sistema di utilizzare Bash per l'esecuzione. Quindi possiamo scrivere i nostri script.

Scriviamo solo un semplice script che stamperà alcune righe nel terminale. Il codice sarà:

#!/bin/bash echo 'Hello, techcodeview.com' 

Ora salveremo il file e gli forniremo il permesso di esecuzione. Per fare ciò utilizzare il seguente comando –

chmod +x scriptname.sh 

Successivamente per eseguire il seguente script utilizzeremo il seguente comando –

./scriptname.sh 

Ecco la rappresentazione pittorica della shell del terminale dopo aver eseguito i comandi di cui sopra come segue:

Qui il nome del file di script è gfg.sh.

Ora possiamo anche scrivere comandi più complicati utilizzando gli script Bash. Ecco un esempio di seguito in cui stiamo utilizzando una dichiarazione di condizione:

Esempio di sceneggiatura:

#!/bin/bash Age=17 if [ '$Age' -ge 18 ]; then echo 'You can vote' else echo 'You cannot vote' fi 

Produzione:

You cannot vote 

Ecco la rappresentazione pittorica della shell del terminale dopo aver eseguito lo script sopra come segue:

Nel modo sopra descritto, possiamo eseguire più comandi Bash contemporaneamente.

Ora esaminiamo gli altri concetti importanti relativi a Bash Scripting.

Nomi e autorizzazioni dei file

Nell'esempio sopra, abbiamo salvato il file utilizzando gfg.sh nome e fornito anche il permesso di esecuzione utilizzando chmod comando. Ora capiamo perché lo abbiamo fatto.

Mentre scriviamo gli script bash dovremmo salvare il nostro file con l'estensione .sh, in modo che il sistema Linux possa eseguirlo. Quando creiamo per la prima volta un file con estensione .sh, non ha alcun permesso di esecuzione e senza il permesso di esecuzione lo script non funzionerà. Quindi, dovremmo fornire il permesso di esecuzione utilizzando il file chmod comando.

Il nome file di uno script bash può essere qualsiasi cosa, ma per convenzione si consiglia di utilizzare maiuscole e minuscole ( my_bash_script.sh ) o trattini ( my-bash-script.sh ) per denominare un file di script.

Variabili

Possiamo usare le variabili nello scripting bash. Di seguito è riportato un programma di esempio per comprendere l'utilizzo delle variabili negli script Bash.

Esempio di sceneggiatura:

Name='SATYAJIT GHOSH' Age=20 echo 'The name is $Name and Age is $Age' 

Output delle variabili:

The name is SATYAJIT GHOSH and Age is 20 

Quindi, ecco che abbiamo dichiarato due variabili Nome e un altro lo è Età. Queste variabili sono accessibili utilizzando $Name e $Age. Ciò significa che possiamo dichiarare una variabile in uno script bash utilizzando NomeVariabile=Valore e puoi accedervi utilizzando $NomeVariabile. Ecco la rappresentazione pittorica della shell del terminale dopo aver eseguito lo script sopra come segue:

Esistono due tipi di variabili presenti in Bash Scripting. Convenzionalmente, se una variabile viene dichiarata all'interno di una funzione, generalmente è a variabile locale e se è dichiarato outside allora è a variabile globale . Nel caso di uno script bash, questo concetto è leggermente diverso, qui qualsiasi variabile sia scritta all'interno di una funzione o all'esterno di una funzione per impostazione predefinita è una variabile globale. Se vogliamo creare una variabile locale allora dobbiamo usare la parola chiave local.

Nota: È consigliabile utilizzare sempre una variabile locale all'interno di una funzione per evitare inutili confusioni.

Un esempio dello stesso è riportato di seguito:

Esempio di sceneggiatura:

#!/bin/bash var1='Apple' #global variable myfun(){ local var2='Banana' #local variable var3='Cherry' #global variable echo 'The name of first fruit is $var1' echo 'The name of second fruit is $var2' } myfun #calling function echo 'The name of first fruit is $var1' #trying to access local variable echo 'The name of second fruit is $var2' echo 'The name of third fruit is $var3' 

Output di variabili locali e globali:

The name of first fruit is Apple The name of second fruit is Banana The name of first fruit is Apple The name of second fruit is The name of third fruit is Cherry 

Nell'esempio sopra, var2 è una variabile locale, quindi quando vi accediamo dalla funzione funziona bene, ma quando proviamo ad accedervi dall'esterno della funzione, ci fornisce un risultato vuoto nell'output.

D'altra parte, a differenza dei linguaggi di programmazione, anche se var3 è definita all'interno di una funzione, agisce comunque come una variabile globale ed è possibile accedervi all'esterno della funzione. Di seguito è riportata la rappresentazione della shell del terminale dopo l'esecuzione dello script:

Ingresso e uscita

Input e output sono concetti fondamentali per lo scripting di shell. Uno script può ricevere uno o più input e può anche produrre zero o molti output. Potrebbe anche produrre alcuni errori. Capiamolo con un esempio –

Esempio di sceneggiatura:

echo 'Enter filename' read filename if [ -e $filename ] then echo '$filename is exits on the directory' cat $filename else cat>$nomefile echo 'File creato' fi 

Uscita di input e output:

Prima volta:

Enter filename geeks.txt Hello Geek File created 

Seconda volta:

Enter filename geeks.txt geeks.txt is exits on the directory Hello Geek 

Quindi, in questo esempio sopra la prima volta, lo script non è riuscito a trovare alcun file con quel nome file e il blocco else viene eseguito. Ha creato il file e ha inserito alcuni dati in quel file. Quando lo eseguiamo una seconda volta con lo stesso nome file, trova il file. Quindi, il blocco if viene eseguito e mostra il contenuto del file. La lettura del contenuto del file viene effettuata come input e la prima volta che i dati vengono inseriti nel file viene considerato come output. Qui abbiamo usato > per memorizzare il contenuto in un file. IL > la notazione viene utilizzata per reindirizzare stdout a un file. D'altra parte, possiamo usare 2> notazione per reindirizzare stderr e &> per reindirizzare sia stdout che stderr.

Di seguito è riportata la rappresentazione pittorica della shell del terminale dopo aver eseguito il seguente script:

Funzioni

Nella programmazione, una funzione è un blocco di codice che esegue alcune attività e può essere chiamato più volte per eseguire attività. L'esempio più semplice dell'uso della funzione nello scripting Bash può essere fornito come:

Esempio di sceneggiatura:

#!/bin/bash #It is a function myFunction () { echo Hello World from techcodeview.com } #function call myFunction 

Uscita delle funzioni:

Hello World from techcodeview.com 

L'esempio sopra mostra una funzione che stampa qualcosa quando viene chiamata.

Quindi, la sintassi di base per scrivere funzioni all'interno di uno script Bash sarà:

Sintassi delle funzioni:

#for defining function_name(){ commands ..... } function_name # for calling 

Oltre a questo, possiamo anche avere funzioni con argomenti passanti e con valori restituiti.

Il processo decisionale

Nella programmazione, il processo decisionale è uno dei concetti importanti. Il programmatore fornisce una o più condizioni per l'esecuzione di un blocco di codice. Se le condizioni sono soddisfatte, viene eseguito solo quel blocco di codici.

All'interno degli script di shell vengono utilizzati due tipi di dichiarazioni decisionali. Sono -

1. Istruzione If-else:

L'istruzione If else è un'istruzione condizionale. Può essere utilizzato per eseguire due codici diversi a seconda che la condizione data sia soddisfatta o meno.

Ci sono un paio di varietà presenti nell'istruzione if-else. Sono -

  • se-fi
  • se-altro-fi
  • if-elif-else-fi
  • nidificato if-else

La sintassi per quello più semplice sarà:

Sintassi dell'istruzione If-else:

if [ expression ]; then statements fi 

Esempio di sceneggiatura:

Name='Satyajit' if [ '$Name' = 'Satyajit' ]; then echo 'His name is Satyajit. It is true.' fi 

Output dell'istruzione if-else:

His name is Satyajit. It is true. 

Nell'esempio precedente, durante la verifica della condizione, il nome corrisponde e la condizione diventa vera. Pertanto, il blocco di codice presente all'interno del blocco if viene eseguito. Nel caso in cui il nome non corrisponda, non avrà un output. Di seguito è riportata la rappresentazione pittorica della shell del terminale dopo aver eseguito il seguente script:

2. dichiarazione case-sac:

case-sac funziona sostanzialmente come l'istruzione switch nella programmazione. A volte, se dobbiamo controllare più condizioni, l'utilizzo delle istruzioni if ​​potrebbe risultare complicato. In quei momenti possiamo usare un'istruzione case-sac. La sintassi sarà:

Sintassi dell'istruzione case-sac:

case $var in Pattern 1) Statement 1;; Pattern n) Statement n;; esac 

Esempio di sceneggiatura:

Name='Satyajit' case '$Name' in #case 1 'Rajib') echo 'Profession : Software Engineer' ;; #case 2 'Vikas') echo 'Profession : Web Developer' ;; #case 3 'Satyajit') echo 'Profession : Technical Content Writer' ;; esac 

Output dell'istruzione case-sac:

Profession : Technical Content Writer 

Nell'esempio precedente, l'istruzione case-sac ha eseguito l'istruzione che fa parte del modello corrispondente qui 'Nome'. Di seguito è riportata la rappresentazione pittorica della shell del terminale dopo aver eseguito il seguente script:

Confronti tra stringhe e numerici

Il confronto tra stringhe significa che nello scripting della shell possiamo prendere decisioni eseguendo confronti anche all'interno delle stringhe. Ecco una tabella descrittiva con tutti gli operatori –

Operatore Descrizione
== Restituisce vero se le stringhe sono uguali
!= Restituisce vero se le stringhe non sono uguali
-N Restituisce vero se la stringa da testare non è nulla
-Con Restituisce vero se la stringa da testare è nulla

Gli operatori aritmetici vengono utilizzati per verificare le condizioni basate sull'aritmetica. Come minore di, maggiore di, uguale a, ecc. Ecco una tabella descrittiva con tutti gli operatori –

Operatore Descrizione
-eq Pari
-ge Maggiore o uguale
-gt Più grande di
- IL Minore o uguale
-lt Meno di
- È Non uguale

Di seguito è riportato un semplice esempio dello stesso:

Esempio di sceneggiatura:

if [ 10 -eq 10 ];then echo 'Equal' fi if [ 'Geeks' == 'Geeks' ]; then echo 'same' #output else echo 'not same' fi 

Output di confronti tra stringhe e numerici:

Equal same 

In questo esempio il primo (-eq) è un confronto numerico che verifica l'uguaglianza. Anche il secondo ( == ) controlla l'uguaglianza ma nelle stringhe. Di seguito è riportata la rappresentazione pittorica della shell del terminale dopo aver eseguito il seguente script:

Approfondiremo questo concetto nei prossimi articoli.

Conclusione

In questo articolo discutiamo dello scripting Bash che svolge un ruolo fondamentale nell'automazione delle attività all'interno dell'ambiente Linux. Come interprete della riga di comando, Bash offre semplicità e facilità d'uso agli sviluppatori per creare script che semplificano le operazioni di routine, manipolano file ed eseguono attività complesse. Sebbene gli script Bash possano migliorare la produttività evitando azioni ripetitive ed eseguendo sequenze di comandi in modo efficiente, comportano anche considerazioni come la gestione delle autorizzazioni, la gestione delle variabili e l'implementazione di strutture decisionali. Padroneggiando lo scripting Bash, gli utenti possono sfruttarne la potenza per ottimizzare il flusso di lavoro e migliorare le attività di amministrazione del sistema su piattaforme Linux.