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:
- Vantaggi degli script Bash:
- Come scrivere script Bash?
- Nomi e autorizzazioni dei file
- Variabili
- Ingresso e uscita
- Funzioni
- Il processo decisionale
- Confronti tra stringhe e numerici
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.