Tutorial di scripting Bash per principianti

Bash Scripting Tutorial



Il linguaggio di comando predefinito di Linux è lo script Bash. Abbiamo bisogno di eseguire molti comandi in Linux su base giornaliera per molti scopi. Queste attività quotidiane possono essere automatizzate utilizzando uno script bash. Qualsiasi utente può imparare questo linguaggio di scripting molto facilmente e rapidamente. Se sei nuovo nella programmazione bash, questo tutorial fa per te.

Contenuti:

  1. Commenti
  2. comando eco
  3. Variabili
  4. Dichiarazione condizionale
  5. loop
  6. Funzioni
  7. Chiamare programmi in uno script
  8. Creazione di menu
  9. Elaborazione della riga di comando
  10. Aritmetica
  11. Manipolazione delle stringhe
  12. Restituzione di codici di ritorno da uno script e cattura in un altro script
  13. Lettura e scrittura su file
  14. tubi

Commenti

L'aggiunta di commenti con il codice è una parte essenziale di qualsiasi linguaggio di programmazione. I commenti non vengono analizzati con lo script al momento dell'esecuzione. Il lettore può comprendere correttamente qualsiasi codice se il codice è ben commentato. Puoi aggiungere un commento in più modi nello script bash. In questa parte viene mostrato come aggiungere commenti su una riga e su più righe in uno script bash. Crea un file bash con il seguente script per conoscere l'uso del commento bash. Qui, il simbolo '#' viene utilizzato per aggiungere un commento su una riga e le virgolette singole (') con ':' vengono utilizzate per aggiungere commenti su più righe.







bash_comment.sh



#!/bin/bash
#Prendi un numero come input
buttato fuori 'Inserisci un numero'
leggerea
:'
Verificare che il numero di input sia
minore di 10 o maggiore di 10 o uguale a 10
'

Se [[ $ a -lt 10 ]]
poi
buttato fuori 'Il numero è inferiore a 10'
elifa [[ $ a -gt 10 ]]
poi
buttato fuori 'Il numero è maggiore di 10'
altro
buttato fuori 'Il numero è uguale a 10'
essere

Produzione:



Esegui lo script.





$bashbash_comment.sh

Qui lo script viene eseguito tre volte con il valore di input 3, 10 e 90. Apparirà il seguente output.



Se vuoi saperne di più sui commenti di bash, puoi controllare questo tutorial .

Vai all'inizio

comando eco

Il comando `echo` viene utilizzato in bash per stampare l'output nel terminale. Varie opzioni possono essere utilizzate con il comando echo in bash per stampare l'output in modi diversi. Crea un file bash con il seguente script per conoscere i due semplici usi del comando `echo`. Qui, il primo comando 'echo' stamperà un semplice dato di testo con una nuova riga e il secondo comando echo stamperà un testo semplice senza una nuova riga.

echo_test.sh

#!/bin/bash
#Stampa il primo testo
buttato fuori 'Stampa il testo con una nuova riga'
#Stampa il secondo testo
buttato fuori -n 'Stampa il testo senza una nuova riga'

Produzione:

Esegui lo script.

$bashecho_test.sh

Il seguente output apparirà dopo aver eseguito il comando precedente.

Ci sono molti altri usi del comando `echo` in bash. Puoi controllare questo tutorial per saperne di più sul comando `echo`.

Vai all'inizio

Variabili

La dichiarazione di variabile è una parte necessaria di qualsiasi linguaggio di programmazione. Le variabili Bash possono essere dichiarate in diversi modi. Quando viene assegnato un valore in una variabile, non viene utilizzato alcun simbolo all'inizio della variabile. Il simbolo '$' viene utilizzato con il nome della variabile al momento della lettura del valore della variabile. La variabile può essere utilizzata dal terminale o può essere utilizzata in qualsiasi script bash.

I seguenti comandi dichiareranno una variabile stringa denominata mistero con un valore particolare e poi stampare il valore della variabile nel terminale.

$mistero='Mi piace la programmazione bash'
$buttato fuori $mystr

Produzione:

Crea un file bash con il seguente script. Qui vengono dichiarate due variabili. Questi sono $ a e $ b . Se il valore di ingresso memorizzato in $ a è uguale a $ b poi il messaggio, I numeri sono uguali verrà stampato altrimenti I numeri non sono uguali verrà stampato.

var.sh

#!/bin/bash
buttato fuori 'Inserisci un numero'
leggerea
B=100
Se [[ $ a -eq $ b ]]
poi
buttato fuori 'I numeri sono uguali'
altro
buttato fuori 'I numeri non sono uguali'
essere

Produzione:

Esegui lo script.

$bashvar.sh

Il comando sopra viene eseguito per due volte con il valore 56 e 100. Apparirà il seguente output.

Se vuoi saperne di più sulle variabili bash, puoi controllare questo tutorial .

Vai all'inizio

Dichiarazione condizionale

Come un altro linguaggio di programmazione, puoi usare l'istruzione condizionale in bash. ' Se-allora-altrimenti ' e ' Astuccio ' sono utilizzate principalmente per implementare le istruzioni di condizione in qualsiasi linguaggio di programmazione. L'uso dell'istruzione condizionale usando 'Se' l'istruzione è mostrata in questa sezione di questo tutorial. Crea un file bash con il seguente script in cui viene utilizzata l'istruzione condizionale. Qui, due valori saranno presi dall'utente come input e memorizzati nelle variabili, $codice , e $età . L'istruzione 'if' viene utilizzata per verificare il valore di $età è più grande di O uguale a 18 e il valore di $codice è 1100 . Se entrambe le condizioni sono vere, il messaggio, Hai diritto a vedere il film verrà stampato altrimenti Non sei idoneo a vedere il film verrà stampato.

cond.sh

#!/bin/bash

buttato fuori 'Inserisci il tuo codice'
leggerecodice
buttato fuori 'Inserisci la tua età'
leggereetà

Se [[ $età -dare 18 && $codice -eq '1100' ]]
poi
buttato fuori 'Hai diritto a vedere il film'
altro
buttato fuori 'Non puoi vedere il film'
essere

Produzione:

Esegui lo script.

$bashcond.sh

Il seguente output apparirà dopo aver preso diversi valori di input. 1100 viene fornito come codice e 5 come età per la prima esecuzione e se la condizione restituisce false per questi valori. 1100 viene fornito come codice e 45 come età per la seconda esecuzione che restituisce true per la condizione if.

Se vuoi saperne di più sull'istruzione condizionale bash, puoi controllare questo tutorial.

Vai all'inizio

loop

Quando alcune parti dello script devono essere eseguite più volte, il ciclo viene utilizzato per eseguire l'attività. Bash supporta tre tipi di dichiarazione di loop come altri linguaggi. Questi sono per, while e fino a cicli. In base ai requisiti di programmazione, nello script viene utilizzato un ciclo particolare. Gli usi di questi tre tipi di loop sono mostrati in questa sezione usando semplici esempi.

Utilizzo del ciclo for

Crea un file bash con il seguente script dove ` per ` loop viene utilizzato per l'iterazione. `per` loop viene utilizzato principalmente per iterare un elenco di dati o un array. Qui viene utilizzato un elenco di nomi di giorni della settimana e ogni nome del giorno della settimana viene ripetuto utilizzando il ciclo for. `se` l'istruzione viene utilizzata per stampare un particolare messaggio in base al nome del giorno della settimana.

for.sh

#Leggi il nome di un giorno della settimana in ogni iterazione del ciclo
pergiornoinlunedì martedì mercoledì giovedì venerdì sabato domenica
fare

#Controlla che il nome del giorno della settimana sia lunedì o giovedì
Se [[ $giorno=='Lunedì' || $giorno=='Giovedi' ]]
poi
buttato fuori 'Riunione su$giornoalle 9:30'

#Controlla che il nome del giorno della settimana sia martedì o mercoledì o venerdì
elifa [[ $giorno=='Martedì' || $giorno=='Mercoledì' || $giorno=='Venerdì' ]]
poi
buttato fuori 'Allenamento in corso'$giornoalle 11:00'
altro

#Stampa 'Vacanze' per altri giorni
buttato fuori '$giornoè vacanza'
essere
fatto

Produzione:

Esegui lo script.

$bashfor.sh

Il seguente output apparirà dopo aver eseguito lo script.

Se vuoi saperne di più sull'uso di bash per loop, puoi controllare questo tutorial.

Utilizzo del ciclo while

Crea un file bash con il seguente script dove ` mentre ` loop viene utilizzato per l'iterazione. Questo script stamperà quei numeri da 1 a 20 che sono pari e divisibili per 5. Qui, $contatore variabile viene utilizzata per controllare l'iterazione del ciclo e il valore di questa variabile viene incrementato di 1 in ogni iterazione. quando `se` condizione restituirà true quindi stamperà il valore di $contatore .

#!/bin/bash

#Stampa il messaggio
buttato fuori 'Stampa i numeri pari e divisibili per 5'

#Inizializza il contatore
contatore=1

#Itera il ciclo finché il valore di $counter è minore o uguale a 20
mentre [ $contatore -il venti ]
fare

#Controlla che $counter sia divisibile per 2 e 5
Se [[ $contatore%2-eq 0 && $contatore%5-eq 0 ]]
poi
#Stampa $counter senza newline
buttato fuori '$contatore'
essere

#Incrementa $contatore di 1
((contatore++))
fatto
buttato fuori 'Fatto'

Produzione:

$bashmentre.sh

Ci sono solo numeri entro 1-20 quelli sono pari e divisibili per 5. Il seguente output apparirà dopo aver eseguito lo script.

Se vuoi saperne di più sull'uso di bash ` mentre` loop allora puoi controllare questo tutorial .

Utilizzo del ciclo fino a quando

Crea un file bash con il seguente script dove ` fino a ` loop viene utilizzato per l'iterazione. Questo script stamperà tutti i numeri dispari da 0 a 20. $n variabile viene utilizzata in questo script per eseguire l'iterazione del ciclo.

fino a quando.sh

#!/bin/bash

#Inizializza la variabile, n
n=venti

#Ripeti il ​​ciclo finché il valore di $n è maggiore di 0
fino a [ $n -lt 0 ]
fare

#Controlla che il valore di n sia dispari
Se [[ $n%2-gt 0 ]]
poi
buttato fuori $n
essere

#Incrementa il valore di n di 1
((n=$n-1))
fatto

Produzione:

Esegui lo script.

$bashfino a quando.sh

Lo script stamperà tutti i numeri pari da 20 a 1. Il seguente output apparirà dopo aver eseguito lo script.

Vai all'inizio

Funzioni

Quando un blocco di codice deve essere eseguito più volte in uno script, la funzione viene utilizzata per eseguire l'attività. Sarà necessario chiamare la funzione per nome solo quando lo script definito nella funzione deve essere eseguito molte volte anziché aggiungere lo stesso script più volte. La prima parentesi iniziale e finale viene utilizzata con il nome della funzione per dichiarare la funzione nello script bash. La funzione può essere chiamata solo dal nome della funzione in bash. Bash non supporta l'argomento della funzione come un altro linguaggio di programmazione standard. Ma il valore può essere passato alla funzione bash in un modo diverso mostrato in questa sezione. Il valore può essere restituito dalla funzione con l'istruzione return o senza utilizzare l'istruzione return.

Crea un file bash con il seguente script per sapere come possono essere dichiarate e chiamate le funzioni nello script bash. Nello script sono dichiarate tre funzioni. La prima funzione è dichiarata per stampare un semplice messaggio, Programmazione Bash per principianti . La seconda funzione è dichiarata per assegnare un valore stringa in una variabile, $return_str che stamperà, Impara la programmazione bash con LinuxHint dopo aver chiamato la funzione. La terza funzione è dichiarata per leggere un valore di argomento come raggio del cerchio che verrà fornito al momento della chiamata della funzione. Qui, Locale è usato per leggere il valore dell'argomento. Questa funzione calcolerà l'area del cerchio in base al valore del raggio utilizzando la formula, r2 e stampare il valore dell'area calcolata.

func.sh

#!/bin/bash

#Dichiarare una funzione semplice
funzioneprint_message()
{
buttato fuori 'Programmazione Bash per principianti'
}

#Dichiara una funzione per restituire un valore stringa
funzioneret_strdata()
{
#Inizializza la variabile con valore stringa
return_str='Impara la programmazione bash con LinuxHint'
}

#Dichiara una funzione per leggere il valore dell'argomento
funzionecalcola_area()

#Leggi il valore dell'argomento passato
Locale raggio=$ 1
la zona= $(buttato fuori $raggio*$raggio*3.14

#Chiama la funzione per stampare un semplice messaggio
print_message

#Chiama la funzione che assegnerà un valore stringa in una variabile
ret_strdata

#Stampa il valore della variabile
buttato fuori $return_str

#Leggi il valore del raggio
buttato fuori 'Inserisci il valore del raggio'
leggereopera

#Chiama la funzione con il valore del raggio
calcola_area$ rad

Produzione:

Esegui lo script.

$bashfunc.sh

Il seguente output apparirà dopo aver eseguito lo script. Le prime due righe verranno stampate chiamando le funzioni, print_message() e ret_strdata() . L'ultima riga verrà stampata chiamando la funzione, calcola_area () con il valore del raggio di input preso.

Se vuoi sapere come restituire una stringa dalla funzione bash, puoi farlo questo tutorial l.

Vai all'inizio

Chiamare programmi in uno script

Puoi usare molti tipi di comandi per chiamare altri programmi in qualsiasi script bash, come fonte, bash, eval, dirigere , ecc. Supponiamo che tre file bash, add.sh , sottrarre.sh, moltiplica.sh e divisione.sh creato per eseguire addizioni, sottrazioni, moltiplicazioni e divisioni. Qui, sottrarre.sh e divisione.sh leggere gli argomenti della riga di comando. Lo script di tutti questi quattro file è riportato di seguito.

add.sh

#!/bin/bash
a=60
B=40
((risultato=$ a+$ b))
buttato fuori 'L'aggiunta di$ a+$ b=$risultato'

sottragga.sh

#!/bin/bash
a=$ 1
B=$ 2
((risultato=$ a-$ b))
buttato fuori 'La sottrazione di$ a-$ b=$risultato'

moltiplicare.sh

#!/bin/bash
((risultato=$ 1*$ 2))
buttato fuori 'La moltiplicazione di $1 e $2 è$risultato'

divide.sh

#!/bin/bash
a=$ 1
B=2
((risultato=$ a/$ b))
buttato fuori 'La divisione di$ adi$ bè$risultato'

Crea un file bash chiamato, callpro.sh con il seguente script per chiamare i file bash menzionati usando i comandi source, bash, eval ed exec. È necessario impostare l'autorizzazione di esecuzione per i quattro file precedenti prima di eseguire lo script seguente. Il comando `source` è usato per chiamare add.sh file. Il comando `bash` viene utilizzato per eseguire il file subtract.sh. Il comando `eval` viene utilizzato per eseguire il file multiply.sh. Due valori di input vengono inviati come argomenti della riga di comando per il comando `eval`. L'ultimo comando è il comando exec che funziona solo con il percorso assoluto. Per questo, nello script viene fornito il nome completo del percorso del file divide.sh.

callpro.sh

#!/bin/bash
script1='aggiungi.sh'
script2='sottrarre.sh'
script3='moltiplica.sh'
script4='/home/fahmida/code/divide.sh'

fonte '$script1'

bash $script2 cinquanta venti

buttato fuori 'Inserisci il valore di a'
leggerea
buttato fuori 'Inserisci il valore di b'
leggereB
valuta bash $script3 $ a $ b
dirigere $script4 30

Produzione:

Esegui lo script.

$bashcallpro.sh

Il seguente output apparirà dopo aver eseguito lo script.

Vai all'inizio

Creazione di menu

C'è un comando utile in bash per creare un semplice menu che si chiama `seleziona` comando. Utilizzando questo comando è possibile creare diversi tipi di menu. Un particolare elenco di dati viene utilizzato per creare un menu tramite questo comando. Crea un file bash con il seguente codice per vedere l'uso di `seleziona` comando per la creazione di un menu. In questo esempio, l'elenco di cinque voci verrà stampato come un menu e chiederà all'utente di scegliere una lingua dall'elenco. Il valore selezionato verrà memorizzato nella variabile, $lingua che viene stampato in seguito concatenandolo con un'altra stringa. Lo script chiederà continuamente di selezionare la lingua finché l'utente non preme 6 terminare dallo script.

menu.sh

#!/bin/bash

#Stampa messaggio per l'utente
buttato fuori 'Seleziona la tua lingua preferita'

# Definisce l'elenco di una voce di menu
SelezionarelinguaggioinC# Java PHP Python Bash Exit
fare
#Stampa il valore selezionato
Se [[ $lingua=='Uscita' ]]
poi
Uscita 0
altro
buttato fuori 'La lingua selezionata è$lingua'
essere
fatto

Produzione:

Esegui lo script.

$bashmenu.sh

Secondo il seguente output, l'utente ha premuto 3 per la prima volta che ha stampato PHP e ha premuto 6 per la seconda volta che è terminato dallo script.

Se vuoi saperne di più sulla creazione del menu bash con `select`, puoi visitare questo tutorial.

Vai all'inizio

Elaborazione della riga di comando

A volte è necessario fornire valori di input durante l'esecuzione dello script dalla riga di comando. Questo compito può essere svolto in due modi in bash. Un modo è usare le variabili degli argomenti e un altro è usare la funzione getopts. La lettura dei dati di input della riga di comando dal terminale utilizzando la variabile dell'argomento è mostrata in questa sezione.

Crea un file bash con il seguente script per vedere l'uso della lettura del valore dell'argomento della riga di comando. Questo script leggerà tre argomenti della riga di comando che verranno memorizzati nelle variabili, $operando1, $operando2 e $operatore. Per eseguire correttamente lo script, il valore del primo e del terzo argomento deve essere il numero e il valore del secondo argomento deve essere uno dei quattro operatori aritmetici ('+', '-', '/', 'x'). Se L'istruzione controllerà il valore di $operator ed eseguirà l'operazione in base all'operatore e stamperà il valore.

cl1.sh

#!/bin/bash

#Stampa le variabili degli argomenti
buttato fuori 'I valori degli argomenti sono: $1 $2 $3'

# Memorizza i valori degli argomenti
operando1=$ 1
operando2=$ 3
operatore=$ 2

#Controlla il valore dell'argomento del secondo comando per eseguire l'operazione aritmetica
Se [[ $operatore=='+' ]]
poi
((risultato=$ operando1+$ operando2))
elifa [[ $operatore=='-' ]]
poi
((risultato=$ operando1-$ operando2))
elifa [[ $operatore=='X' ]]
poi
((risultato=$ operando1*$ operando2))
elifa [[ $operatore=='/' ]]
poi

((risultato=$ operando1/$ operando2))
essere

# stampa il risultato
buttato fuori -e 'Il risultato è =$risultato'

Produzione:

Esegui lo script.

$bashcl1.sh

Lo script viene eseguito quattro volte per quattro tipi di operatori aritmetici. Il seguente output apparirà per i valori degli argomenti, 6 + 3, 6 – 3, 6 x 3 e 6 / 3 .

I valori degli argomenti possono essere passati con la coppia nome-valore in bash. Crea un file bash con il seguente script per mostrare come leggere i valori degli argomenti con il nome. Lo script leggerà due variabili di argomento. I valori degli argomenti con nome vengono stampati nella prima istruzione dello script. Successivamente, viene utilizzato un ciclo for per iterare l'array che contiene i valori degli argomenti della riga di comando. Ogni elemento dell'array è separato in una coppia chiave-valore usando il comando `cut`. Successivamente, l'istruzione case viene utilizzata per stampare un messaggio particolare in base al valore della chiave.

cl2.sh

#!/sono/bash

#Stampa le variabili degli argomenti
buttato fuori 'I valori degli argomenti sono: $1 $2'

#Leggi ogni argomento separatamente usando il ciclo for
perarrabbiatoin '[e-mail protetta]'
fare

#Separa il nome e il valore dell'argomento
chiave= $(buttato fuori $ argomento | tagliare -f1 -D=)
valore= $(buttato fuori $ argomento | tagliare -f2 -D=)

#Stampa il messaggio in base al nome dell'argomento
Astuccio $chiave in
nome) buttato fuori 'Nome dello studente =$valore';;
segnare) buttato fuori 'Marchio ottenuto =$valore' ;;
*)
esac
fatto

Produzione:

Esegui lo script con i seguenti argomenti della riga di comando.

$bashcl2.shnome=Abir Hossainsegnare=90

Nei comandi precedenti sono forniti due argomenti della riga di comando. Questi sono nome=Abir Hossain e segno=90 . nome e segni sono separati dallo script e vengono stampati due valori dopo la formattazione dell'output.

Elaborazione degli argomenti della riga di comando utilizzando getopts la funzione non è discussa in questo tutorial. Se vuoi conoscere l'elaborazione della riga di comando usando getopts funzione allora puoi visitare questo tutorial .

Vai all'inizio

Aritmetica

L'esecuzione di operazioni aritmetiche è un requisito comune a qualsiasi linguaggio di programmazione. Bash esegue l'operazione aritmetica in modo diverso rispetto a un altro linguaggio di programmazione standard. Esistono diversi modi per eseguire operazioni aritmetiche in bash. Uno dei modi semplici per eseguire l'operazione aritmetica è mostrato in questa sezione. Crea un file bash con il seguente script. In questo script sono mostrati quattro tipi di operazioni aritmetiche. Una semplice operazione di somma e divisione viene mostrata utilizzando le prime parentesi doppie all'inizio dello script. Successivamente, viene mostrata l'operazione di pre-incremento. Infine, nell'ultima parte dello script è mostrato il modo di usare l'operatore di stenografia.

arith.sh

#!/bin/bash
# Calcola la somma
risultato= $((cinquanta+25))
# Stampa il valore della somma
buttato fuori 'somma =$risultato'

# Calcola la divisione
risultato= $((cinquanta/25))
# Stampa il valore della divisione
buttato fuori 'divisione =$risultato'

# Assegna un valore a N
n=10
# Facendo il pre-incremento
((--N))
# Stampa il valore di N
buttato fuori 'Valore dopo decremento =$N'

# Utilizzo dell'operatore abbreviato
((N +=10 ))
# Stampa il valore di N
buttato fuori 'Valore dopo aver aggiunto 10 =$N'

Produzione:

Esegui lo script.

$basharith.sh

Il seguente output apparirà dopo aver eseguito lo script.

Tutte le operazioni aritmetiche vengono eseguite utilizzando le doppie parentesi in questo script sopra. Ma puoi usare ' permettere ',' espr ' e ' avanti Cristo ' comando per eseguire l'operazione aritmetica in bash. Se vuoi saperne di più su questi comandi per eseguire operazioni aritmetiche bash, puoi visitare questo tutorial.

Vai all'inizio

Manipolazione delle stringhe

Molti tipi di attività possono essere eseguiti con i dati della stringa in bash. Alcuni sono la concatenazione di stringhe, il confronto di stringhe, la divisione di una stringa, la modifica delle maiuscole e le minuscole della stringa, ecc. Non ci sono funzioni di stringa integrate come altri linguaggi standard in bash per eseguire le operazioni sulle stringhe. Alcune manipolazioni comuni delle stringhe sono discusse in questa sezione di questo tutorial.

Stringa concatenata

L'aggiunta di due o più stringhe è detta concatenazione di stringhe. La stringa viene unita in bash posizionandola una dopo l'altra. Crea un file bash con il seguente script per mostrare l'uso della concatenazione di stringhe. Due variabili stringa vengono inizializzate e stampate dopo aver combinato le variabili. Qui, il contenuto di $stringa1 e $stringa2 verranno uniti e stampati.

concat.sh

#!/bin/bash

#Inizializza la prima variabile stringa
stringa1='Mi piace '
#Inizializza la seconda variabile stringa
stringa2='Programmazione Bash'
#Stampa dopo aver combinato entrambe le stringhe
buttato fuori '$stringa1$stringa2'

Produzione:

Esegui lo script.

$bashconcat.sh

Il seguente output apparirà dopo aver eseguito lo script.

Puoi saperne di più sulla concatenazione di stringhe da questo tutorial.

Vai all'inizio

Stringa a confronto

Bash utilizza diversi tipi di operatori per confrontare i dati delle stringhe. Crea un file bash con il seguente script per mostrare come confrontare i dati di due stringhe. Un valore stringa viene preso come input nello script che viene confrontato con un'altra stringa. Se il valore corrisponde a un messaggio, Ti piace Python verrà stampato altrimenti Ti piace PERL verrà stampato.

confronta.sh

#!/bin/bash
buttato fuoriInserisci qualsiasi valore di stringa
leggeretesto

#Controlla che i dati di input siano equivalenti a Python
Se [ $testo=='Pitone' ];poi
buttato fuori 'Ti piace Python.'
altro
buttato fuori 'Ti piace PERL'
essere

Produzione:

Esegui lo script.

$bashconfronta.sh

Il seguente output apparirà dopo aver eseguito lo script in cui il valore di input è 'PERL'.

Puoi saperne di più sul confronto delle stringhe da questo tutorial .

Stringa di divisione

Bash non ha alcuna funzione di divisione incorporata per dividere i dati delle stringhe. I dati della stringa possono essere divisi in più modi in bash in base a diversi tipi di delimitatori. Crea un file bash con il seguente script per mostrare come i dati della stringa possono essere suddivisi in bash. Un valore stringa viene preso come input. Questo script dividerà il valore di $testo basata sullo spazio. qui, il IFS variabile viene utilizzata per impostare il delimitatore. `leggere` comando viene utilizzato qui per dividere il valore del testo e memorizzare i valori in un array. per loop viene utilizzato per iterare l'array e stampare il valore di ciascun elemento.

split.sh

#!/bin/bash
#Inserisci un valore stringa
buttato fuoriInserisci un valore di stringa
leggeretesto
# Imposta il delimitatore
IFS=''
#Dividi il valore di $testo in un array in base al delimitatore di spazio
leggere -aarr<<< '$testo'
# Stampa ogni valore dell'array
pervalorein '${arr[@]}';
fare
printf '$valore '
fatto

Produzione:

Esegui lo script.

$bashsplit.sh

Il seguente output apparirà dopo aver preso l'input, Impara la programmazione di Bash . Questo valore di input è un testo di tre parole. Quindi, la stringa è divisa in tre parti.

Puoi saperne di più sul confronto delle stringhe da questo tutorial .

Cambiare maiuscole/minuscole della stringa

La maggior parte dei linguaggi di scripting dispone di funzioni integrate per modificare il caso dei dati di stringa. Ma il caso dei dati della stringa può essere modificato in bash usando `tr` comando o usando ':superiore' e ':inferiore' parole chiave. Crea un file bash con il seguente script per conoscere i modi per cambiare maiuscole e minuscole in bash. Qui, i dati della prima stringa vengono convertiti in maiuscolo usando '^^' simbolo e la seconda stringa viene convertita in minuscolo usando `tr` comando. `tr` Il comando cercherà tutte le lettere maiuscole nella stringa e convertirà i caratteri in minuscolo.

case.sh

#!/bin/bash

#Inizializza i dati della prima stringa
Testo 1='[e-mail protetta]'

#Stampa il valore di $text1 convertendo tutti i caratteri in maiuscolo
buttato fuori ${e-mail^^}

#Inizializza i dati della seconda stringa
testo2='Nozioni di base sulla programmazione di Bash'

#Stampa il valore di $text2 convertendo tutte le maiuscole in minuscole
buttato fuori $testo2 | NS [:superiore:] [:inferiore:]

Produzione:

Esegui lo script.

$bashcase.sh

Il seguente output apparirà dopo aver eseguito lo script.

Puoi saperne di più sul confronto delle stringhe da questo tutorial .

Vai all'inizio

Lettura dei dati della stringa attraverso il ciclo

I dati della stringa funzionano come un array di caratteri per qualsiasi linguaggio di programmazione. Come ' per ' loop può essere usato per leggere i dati della stringa in bash è mostrato in questa sezione. Crea un file di base con il seguente script per leggere ogni parte del valore della stringa utilizzando il ciclo for.

readstr.sh

#!/bin/bas
# Leggi ogni parola di un testo usando il ciclo for
pervaloreinProgrammazione Bashperi principianti
fare
buttato fuori $valore
fatto

Produzione:

Esegui lo script.

$bashreadstr.sh

Il seguente output apparirà dopo aver eseguito lo script.

Puoi saperne di più sull'iterazione dei dati delle stringhe usando il ciclo from questo tutorial .

Vai all'inizio

Restituzione di codici di ritorno da uno script e cattura in un altro script

Uno script bash può catturare i codici di ritorno da un altro script chiamando lo script e usando '$?' per leggere il valore restituito. Supponiamo, un file bash chiamato prima.sh restituisce un codice dopo l'esecuzione. Crea un altro file bash chiamato secondo.sh e aggiungi il seguente script per catturare il valore restituito ed eseguire alcune altre attività. Il codice di entrambi i file è riportato di seguito. prima.sh il file verrà chiamato da secondo.sh file all'inizio dello script. prima.sh restituirà un codice di uscita basato sul valore di input. second.sh catturerà il codice per '$?' e confronta con 1. Se entrambi i valori sono uguali, verrà stampato, Il numero di input è maggiore di 100 , altrimenti verrà stampato, Il numero di input è minore o uguale a 100 .

prima.sh

#!/bin/bash

buttato fuori 'Inserisci un valore numerico'
leggeren

# Verificare che il valore di input sia inferiore o uguale a 100 o meno
Se [[ $n -il 100 ]]
poi
Uscita 0
altro
Uscita 1
essere

secondo.sh

#! /bin/bash

#Esegui il file, first.sh
bash 'primo.sh'

#Verifica che il codice di ritorno sia uguale a 1 o meno
Se [ $? -eq 1 ]
poi
buttato fuori 'Il numero inserito è maggiore di 100'
altro
buttato fuori 'Il numero inserito è minore o uguale a 100'
essere

Produzione:

Esegui lo script.

$bashsecondo.sh

Il seguente output apparirà quando lo script viene eseguito da 55 e 110 per due volte.

Vai all'inizio

Lettura e scrittura su file

La lettura e la scrittura di file sono requisiti comuni della programmazione bash. Bash non ha alcuna funzione incorporata come un'altra lingua per leggere o scrivere il file. Esistono diversi modi per leggere il file in bash. Il modo più comune per leggere o scrivere un file in bash è usare `gatto` comando. Ma questo comando viene utilizzato per leggere l'intero contenuto del file alla volta. Puoi anche leggere qualsiasi file riga per riga utilizzando qualsiasi ciclo e `leggere` comando. Utilizzando l'operatore di reindirizzamento, '>' , puoi scrivere dati in qualsiasi file in bash. Se vuoi aggiungere dati in qualsiasi file, devi usare '>>' operatore. Sia le operazioni di lettura che di scrittura sui file sono mostrate nella parte successiva di questa sezione.

Lettura del file in bash

Crea un file bash con il seguente script per leggere un file esistente denominato ' hardware.txt '. Il contenuto di questo file è riportato di seguito. Nello script, l'intero contenuto del file viene letto da `gatto` comando first e next, mentre il ciclo while viene utilizzato per leggere il file riga per riga.

hardware.txt

Tenere sotto controllo
Tastiera del computer
Topo
Scanner
Stampante

readfile.sh

#!/bin/bash

buttato fuori 'Lettura del file utilizzando il comando cat'

# Leggi il contenuto del file usando il comando `cat`
contenuto=``gattohardware.txt``
buttato fuori $contenuto

buttato fuori 'Lettura del file riga per riga utilizzando il ciclo'

# Assegna il nome del file
nome del file='hardware.txt'

# Ogni riga del file verrà letta da ogni iterazione del ciclo
mentre leggerelinea;
fare
# stampa la riga
buttato fuori $line
fatto<$nomefile

Produzione:

Esegui i seguenti comandi.

$gattohardware.txt
$bashreadfile.sh

Qui, il primo comando stamperà il contenuto del file, hardware.txt senza eseguire alcuno script bash e il secondo comando eseguirà lo script di readfile.sh e stampare il contenuto del file per due volte utilizzando `gatto` comando e `leggere` comando con ciclo while. Puoi visitare questo tutorial per saperne di più sulla lettura dei file riga per riga.

Scrivere file in bash

Crea un file bash con il seguente script per scrivere nuovo contenuto in un nuovo file e aggiungere dati in quel file.

writefile.sh

#!/bin/bash

buttato fuori 'Inserisci del testo'
#Leggi i dati della stringa
leggerestr1
#Aggiungi i dati di input nel file per la prima volta
buttato fuori $str1 >test.txt

buttato fuori 'Inserisci altro testo'
#Leggi un'altra stringa di dati
leggerestr2
#Aggiungi i dati di input alla fine del file
buttato fuori $str2 >>test.txt

#Mostra l'intero contenuto del file
buttato fuori ``gattotest.txt``

Produzione:

Esegui lo script.

$bashwritefile.sh

Il seguente output apparirà dopo aver eseguito lo script.

Vai all'inizio

tubi

Pipe viene utilizzato per reindirizzare qualsiasi output di comando ad altri input di comando. Può essere utilizzato tra diversi tipi di comandi bash per generare un output specifico. Lo standard input è connesso con lo standard output in Linux tramite pipe. È necessario impostare il comando in sequenza con il simbolo pipe ( | ) per ottenere l'output desiderato. Due o più comandi possono essere eseguiti insieme in un singolo comando usando la pipe. Devi eseguire più comandi in più righe senza pipe per eseguire la stessa attività. Quindi, l'uso di pipe è molto utile per eseguire molti tipi di attività in forma breve.

sintassi:

comando1|comando2|...

Qui, l'output del comando1 verrà passato come input del comando2.

Lo stesso tipo di operazione viene eseguita con pipe e senza pipe nella parte successiva di questa sezione. Supponiamo che un file di testo denominato contrassegni.txt è dato con i seguenti dati.

contrassegni.txt

Asraf CSE-409 79

Kabir CSE-304 95

Keya CSE-101 67

Asraf CSE-304 88

Keya CSE-409 90

Asraf CSE-101 92

Devi ordinare i dati del file e scoprire e stampare tutte le voci del nome dello studente 'K Sì ' . È possibile eseguire questa attività eseguendo più comandi senza utilizzare una pipe mostrata nella sezione successiva. I seguenti comandi dovranno essere eseguiti per ottenere l'output desiderato. Il primo comando ordinerà il file. Il secondo comando cercherà la voce 'K Sì ' usando ` presa ` comanda e memorizza l'output in a temp.txt file. Il terzo comando conterà le righe totali di a temp.txt file usando `wc` comando.

$ordinarecontrassegni.txt
$presa 'Keya'contrassegni.txt>temp.txt
$WC -ltemp.txt

Produzione:

Nel file esistono due voci dello studente, 'Keya'. Quindi, dopo aver eseguito i comandi precedenti, apparirà il seguente output.

Puoi facilmente unire i tre comandi precedenti e ottenere lo stesso output eseguendo un singolo comando con una pipe mostrata nel comando seguente. Nessun file temporaneo è richiesto qui per ottenere l'output. Qui, l'output di ` ordinare ` il comando verrà passato come input di ` presa ` comando e l'output di ` presa ` il comando verrà passato come input per il `wc` comando.

$ordinarecontrassegni.txt| presa 'Keya' | WC -l

Produzione:

Dopo aver eseguito il comando sopra, otterrai il seguente output come l'output del comando precedente. L'output del comando sarà 2.

Vai all'inizio

Conclusione:

Gli argomenti più utili e necessari del linguaggio di scripting bash vengono trattati in questo tutorial. Spero che il lettore trarrà beneficio dopo aver letto questo tutorial e sarà in grado di scrivere script bash in modo più efficiente.