Per tutte le distribuzioni Linux, lo script della shell è come una bacchetta magica che automatizza il processo, fa risparmiare tempo agli utenti e aumenta la produttività. Questo tutorial sullo scripting ti introdurrà agli oltre 25 esempi di scripting.
Ma prima di passare all'argomento scripting della shell esempi, comprendiamo lo script di shell e i casi d'uso effettivi dello scripting di shell.
Cos'è lo script Shell?
Bene, la shell è a CLI ( interprete della riga di comando ), che viene eseguito in una finestra di testo in cui gli utenti possono gestire ed eseguire comandi della shell. D'altra parte, il processo di scrittura di una serie di comandi da eseguire su un sistema Linux. Un file che include tali istruzioni è chiamato script bash.
Usi degli script di shell
Di seguito sono riportati alcuni usi comuni di Shell Script:
- Automazione delle attività – Può essere utilizzato per automatizzare attività ripetitive come backup regolari e attività di installazione del software.
- Personalizzazione – È possibile utilizzare gli script di shell per progettare il proprio ambiente della riga di comando ed eseguire facilmente le proprie attività secondo le esigenze.
- Gestione dei file - Gli script di shell possono essere utilizzati anche per gestire e manipolare file e directory, ad esempio spostando, copiando, rinominando o eliminando file.
Esempi di script di shell in Linux
1) Cosa indica lo shebang (#!) all'inizio di uno script di shell?
IL cavolo (#!) all'inizio di uno script indica l'interprete che deve essere utilizzato per eseguire lo script. Indica al sistema quale shell o interprete deve interpretare i comandi dello script.
Per esempio: Supponiamo di avere uno script denominato myscript.sh scritto nella shell Bash:
ospitare Linux

shebang
In questo esempio:
- Il #!/bin/bash all'inizio dello script indica che lo script deve essere interpretato utilizzando la shell Bash.
- I comandi echo vengono utilizzati per stampare messaggi sul terminale.
2) Come si esegue uno script di shell dalla riga di comando?
Per eseguire uno script di shell dalla riga di comando, dobbiamo seguire questi passaggi:
- Assicurati che il file di script disponga delle autorizzazioni eseguibili utilizzando il file comando chmod :
chmod +x myscript.sh>
- Esegui lo script utilizzando il suo nome file:
./myscript.sh>
Qui devi sostituire myscript.sh con il nome del tuo script.
3) Scrivere uno script di shell che stampi techcodeview.com sul terminale.
Crea un nome script `myscript.sh` (stiamo usando ` Perché ` editor, puoi scegliere qualsiasi editor)
vim myscript.sh>
#!/bin/bash
# Questo script stampa techcodeview.com sul terminale
eco techcodeview.com

stampare il nome
Rendiamo eseguibile il nostro script utilizzando `chmod +x`, quindi eseguiamo con `./myscipt.sh` e otteniamo l'output desiderato techcodeview.com.
4) Spiegare lo scopo del comando echo nello scripting della shell.
IL comando eco viene utilizzato per visualizzare testo o variabili sul terminale. È comunemente usato per stampare messaggi, valori variabili e generare output di programma.

comando eco
In questo esempio abbiamo eseguito 'echo' direttamente sul terminale, poiché funziona allo stesso modo all'interno dello script di shell.
5) Come puoi assegnare un valore a una variabile in uno script di shell?
Alle variabili vengono assegnati valori utilizzando l'operatore di assegnazione =.
Per esempio:
#!/bin/bash
# Assegnare un valore a una variabile
nome=Jayesh
età=21
echo $nome $età
Spiegazione:
- Alla variabile nome viene assegnato il valore Jayesh.
- Alla variabile età viene assegnato il valore 21.
- echo viene utilizzato per stampare e `$name` `$age` viene utilizzato per chiamare il valore memorizzato nelle variabili.
6) Scrivi uno script di shell che prenda il nome di un utente come input e lo saluti.
Crea un nome script 'example.sh'.
#!/bin/bash
# Chiedi all'utente il suo nome
echo Come ti chiami?
leggere il nome
# Saluta l'utente
echo Ciao, $nome! Piacere di conoscerti.
Spiegazione:
- #!/bin/bash: questa è la riga shebang. Indica al sistema di utilizzare l'interprete Bash per eseguire lo script.
- # Chiedi all'utente il suo nome: questo è un commento. Fornisce il contesto sul codice imminente. I commenti vengono ignorati dall'interprete.
- echo Come ti chiami?: il comando echo viene utilizzato per visualizzare il testo tra virgolette doppie sul terminale.
- read name: il comando read attende che l'utente inserisca del testo e lo memorizzi nel nome della variabile.
- echo Ciao, $nome! Piacere di conoscerti.: questa riga utilizza il comando echo per stampare un messaggio di saluto che include il valore della variabile name, che è stata raccolta dall'input dell'utente.
7) Come si aggiungono commenti a uno script di shell?
Commenti nello scripting di shell vengono utilizzati per fornire spiegazioni o contesto al codice. Vengono ignorati dall'interprete e sono destinati solo agli esseri umani che leggono la sceneggiatura. Puoi aggiungere commenti utilizzando il simbolo #.
#!/bin/bash
# Questo è un commento che spiega lo scopo dello script
eco gfg
8) Creare uno script di shell che controlli se esiste un file nella directory corrente.
Ecco uno script che controlla se esiste un file denominato example.txt nella directory corrente:
#!/bin/bash
file=esempio.txt
# Controlla se il file esiste
if [ -e $file ]; Poi
echo Il file esiste: $file
altro
echo File non trovato: $file
Essere
Spiegazione:
- #!/bin/bash: questa è la riga shebang che specifica l'interprete (/bin/bash) da utilizzare per eseguire lo script.
- file=example.txt: questa riga definisce la variabile file e gli assegna il valore example.txt. Puoi sostituirlo con il nome del file che desideri verificare.
- if [ -e $file ]; then: questa riga inizia un'istruzione if. La condizione [ -e $file ] controlla se il file specificato dal valore della variabile file esiste. Il flag -e viene utilizzato per verificare l'esistenza del file.
- echo Il file esiste: $file: Se la condizione è vera (cioè il file esiste), questa riga stampa un messaggio che indica che il file esiste, insieme al nome del file.
- else: se la condizione è falsa (ovvero, il file non esiste), lo script esegue il codice nel ramo else.
- echo File non trovato: $file: questa riga stampa un messaggio di errore che indica che il file specificato non è stato trovato, insieme al nome del file.
- fi: questa riga segna la fine dell'istruzione if.

Trovare il file
9) Qual è la differenza tra virgolette singole (') e virgolette doppie () nello scripting di shell?
Le virgolette singole (') e le virgolette doppie () vengono utilizzate per racchiudere stringhe negli script di shell, ma hanno comportamenti diversi:
- Virgolette singole: tutto ciò che è racchiuso tra virgolette singole viene trattato come una stringa letterale. I nomi delle variabili e la maggior parte dei caratteri speciali non vengono espansi.
- Virgolette doppie: le variabili e alcuni caratteri speciali racchiusi tra virgolette doppie vengono espansi. I contenuti sono soggetti a sostituzione di variabile e sostituzione di comando.
#!/bin/bash
abcd=Ciao
echo ‘$abcd’ # Risultato: $abcd
echo $abcd # Risultato: Ciao
10) Come è possibile utilizzare gli argomenti della riga di comando in uno script di shell?
Argomenti della riga di comando sono valori forniti a uno script quando viene eseguito. È possibile accedervi all'interno dello script utilizzando variabili speciali come , , ecc., dove rappresenta il primo argomento, rappresenta il secondo argomento e così via.
Per esempio: Se il nome del nostro script è `example.sh`
#!/bin/bash
echo Nome dello script:
Per tutte le distribuzioni Linux, lo script della shell è come una bacchetta magica che automatizza il processo, fa risparmiare tempo agli utenti e aumenta la produttività. Questo tutorial sullo scripting ti introdurrà agli oltre 25 esempi di scripting.
Ma prima di passare all'argomento scripting della shell esempi, comprendiamo lo script di shell e i casi d'uso effettivi dello scripting di shell.
Cos'è lo script Shell?
Bene, la shell è a CLI ( interprete della riga di comando ), che viene eseguito in una finestra di testo in cui gli utenti possono gestire ed eseguire comandi della shell. D'altra parte, il processo di scrittura di una serie di comandi da eseguire su un sistema Linux. Un file che include tali istruzioni è chiamato script bash.
Usi degli script di shell
Di seguito sono riportati alcuni usi comuni di Shell Script:
- Automazione delle attività – Può essere utilizzato per automatizzare attività ripetitive come backup regolari e attività di installazione del software.
- Personalizzazione – È possibile utilizzare gli script di shell per progettare il proprio ambiente della riga di comando ed eseguire facilmente le proprie attività secondo le esigenze.
- Gestione dei file - Gli script di shell possono essere utilizzati anche per gestire e manipolare file e directory, ad esempio spostando, copiando, rinominando o eliminando file.
Esempi di script di shell in Linux
1) Cosa indica lo shebang (#!) all'inizio di uno script di shell?
IL cavolo (#!) all'inizio di uno script indica l'interprete che deve essere utilizzato per eseguire lo script. Indica al sistema quale shell o interprete deve interpretare i comandi dello script.
Per esempio: Supponiamo di avere uno script denominato myscript.sh scritto nella shell Bash:
shebang
In questo esempio:
- Il #!/bin/bash all'inizio dello script indica che lo script deve essere interpretato utilizzando la shell Bash.
- I comandi echo vengono utilizzati per stampare messaggi sul terminale.
2) Come si esegue uno script di shell dalla riga di comando?
Per eseguire uno script di shell dalla riga di comando, dobbiamo seguire questi passaggi:
- Assicurati che il file di script disponga delle autorizzazioni eseguibili utilizzando il file comando chmod :
chmod +x myscript.sh>
- Esegui lo script utilizzando il suo nome file:
./myscript.sh>Qui devi sostituire myscript.sh con il nome del tuo script.
3) Scrivere uno script di shell che stampi techcodeview.com sul terminale.
Crea un nome script `myscript.sh` (stiamo usando ` Perché ` editor, puoi scegliere qualsiasi editor)
vim myscript.sh>#!/bin/bash
# Questo script stampa techcodeview.com sul terminale
eco techcodeview.comstampare il nome
Rendiamo eseguibile il nostro script utilizzando `chmod +x`, quindi eseguiamo con `./myscipt.sh` e otteniamo l'output desiderato techcodeview.com.
4) Spiegare lo scopo del comando echo nello scripting della shell.
IL comando eco viene utilizzato per visualizzare testo o variabili sul terminale. È comunemente usato per stampare messaggi, valori variabili e generare output di programma.
comando eco
In questo esempio abbiamo eseguito 'echo' direttamente sul terminale, poiché funziona allo stesso modo all'interno dello script di shell.
5) Come puoi assegnare un valore a una variabile in uno script di shell?
Alle variabili vengono assegnati valori utilizzando l'operatore di assegnazione =.
Per esempio:
#!/bin/bash
# Assegnare un valore a una variabile
nome=Jayesh
età=21
echo $nome $etàSpiegazione:
- Alla variabile nome viene assegnato il valore Jayesh.
- Alla variabile età viene assegnato il valore 21.
- echo viene utilizzato per stampare e `$name` `$age` viene utilizzato per chiamare il valore memorizzato nelle variabili.
6) Scrivi uno script di shell che prenda il nome di un utente come input e lo saluti.
Crea un nome script 'example.sh'.
#!/bin/bash
# Chiedi all'utente il suo nome
echo Come ti chiami?
leggere il nome
# Saluta l'utente
echo Ciao, $nome! Piacere di conoscerti.Spiegazione:
- #!/bin/bash: questa è la riga shebang. Indica al sistema di utilizzare l'interprete Bash per eseguire lo script.
- # Chiedi all'utente il suo nome: questo è un commento. Fornisce il contesto sul codice imminente. I commenti vengono ignorati dall'interprete.
- echo Come ti chiami?: il comando echo viene utilizzato per visualizzare il testo tra virgolette doppie sul terminale.
- read name: il comando read attende che l'utente inserisca del testo e lo memorizzi nel nome della variabile.
- echo Ciao, $nome! Piacere di conoscerti.: questa riga utilizza il comando echo per stampare un messaggio di saluto che include il valore della variabile name, che è stata raccolta dall'input dell'utente.
7) Come si aggiungono commenti a uno script di shell?
Commenti nello scripting di shell vengono utilizzati per fornire spiegazioni o contesto al codice. Vengono ignorati dall'interprete e sono destinati solo agli esseri umani che leggono la sceneggiatura. Puoi aggiungere commenti utilizzando il simbolo #.
#!/bin/bash
# Questo è un commento che spiega lo scopo dello script
eco gfg8) Creare uno script di shell che controlli se esiste un file nella directory corrente.
Ecco uno script che controlla se esiste un file denominato example.txt nella directory corrente:
#!/bin/bash
file=esempio.txt
# Controlla se il file esiste
if [ -e $file ]; Poi
echo Il file esiste: $file
altro
echo File non trovato: $file
EssereSpiegazione:
- #!/bin/bash: questa è la riga shebang che specifica l'interprete (/bin/bash) da utilizzare per eseguire lo script.
- file=example.txt: questa riga definisce la variabile file e gli assegna il valore example.txt. Puoi sostituirlo con il nome del file che desideri verificare.
- if [ -e $file ]; then: questa riga inizia un'istruzione if. La condizione [ -e $file ] controlla se il file specificato dal valore della variabile file esiste. Il flag -e viene utilizzato per verificare l'esistenza del file.
- echo Il file esiste: $file: Se la condizione è vera (cioè il file esiste), questa riga stampa un messaggio che indica che il file esiste, insieme al nome del file.
- else: se la condizione è falsa (ovvero, il file non esiste), lo script esegue il codice nel ramo else.
- echo File non trovato: $file: questa riga stampa un messaggio di errore che indica che il file specificato non è stato trovato, insieme al nome del file.
- fi: questa riga segna la fine dell'istruzione if.
Trovare il file
9) Qual è la differenza tra virgolette singole (') e virgolette doppie () nello scripting di shell?
Le virgolette singole (') e le virgolette doppie () vengono utilizzate per racchiudere stringhe negli script di shell, ma hanno comportamenti diversi:
- Virgolette singole: tutto ciò che è racchiuso tra virgolette singole viene trattato come una stringa letterale. I nomi delle variabili e la maggior parte dei caratteri speciali non vengono espansi.
- Virgolette doppie: le variabili e alcuni caratteri speciali racchiusi tra virgolette doppie vengono espansi. I contenuti sono soggetti a sostituzione di variabile e sostituzione di comando.
#!/bin/bash
abcd=Ciao
echo ‘$abcd’ # Risultato: $abcd
echo $abcd # Risultato: Ciao10) Come è possibile utilizzare gli argomenti della riga di comando in uno script di shell?
Argomenti della riga di comando sono valori forniti a uno script quando viene eseguito. È possibile accedervi all'interno dello script utilizzando variabili speciali come $1, $2, ecc., dove $1 rappresenta il primo argomento, $2 rappresenta il secondo argomento e così via.
Per esempio: Se il nome del nostro script è `example.sh`
#!/bin/bash
echo Nome dello script: $0
echo Primo argomento: $1
echo Secondo argomento: $2Se eseguiamo lo script con `.example.sh ciao_1 ciao_2`, verrà restituito:
argomenti cli
11) Come si usa il ciclo for per scorrere un elenco di valori?
Crea un nome script 'example.sh'.
#!/bin/bash
frutta=(mela banana ciliegia dattero)
per frutta in ${frutta[@]}; Fare
echo Frutto corrente: $frutto
FattoSpiegazione:
La riga `fruits=` crea un array denominato Fruits con quattro elementi: mela, banana, ciliegia e data.
- per frutta in ${frutta[@]}; do: questa riga avvia un ciclo for. Ecco cosa significa ciascuna parte:
- for fruit: dichiara una variabile di ciclo chiamata fruit. In ogni iterazione del ciclo, frutta manterrà il valore dell'elemento corrente dall'array frutti.
- ${frutti[@]}: questa è un'espansione dell'array che prende tutti gli elementi dall'array frutti. La sintassi ${…} garantisce che ogni elemento venga trattato come un elemento separato.
- do: questa parola chiave segna l'inizio del corpo del ciclo.
- echo Frutto corrente: $frutto: all'interno del ciclo, questa riga utilizza il comando echo per visualizzare il valore corrente della variabile del ciclo frutto. Stampa un messaggio come Frutto corrente: mela per ogni frutto nell'array.
- done: questa parola chiave segna la fine del corpo del ciclo. Indica allo script che il ciclo è terminato.
per ciclo
12) Scrivere uno script di shell che calcoli la somma degli interi da 1 a N utilizzando un ciclo.
Crea un nome script 'example.sh'.
#!/bin/bash
echo Inserisci un numero (N):
leggi n
somma=0
for (( i=1; i<=$N; i++ )); Fare
somma=$((somma + i))
Fatto
echo La somma dei numeri interi da 1 a $N è: $sumSpiegazione:
Lo script inizia chiedendoti di inserire un numero (N) usando read. Questo numero determinerà quante volte verrà eseguito il ciclo.
- La variabile somma è inizializzata su 0. Questa variabile manterrà traccia della somma dei numeri interi.
- Il ciclo for inizia con for (( i=1; i<=$N; i++ )). Questa struttura ad anello viene utilizzata per ripetere una serie di azioni un certo numero di volte, in questo caso da 1 al valore di N.
- All'interno del ciclo accadono queste cose:
- i=1 imposta la variabile del ciclo i su 1 all'inizio di ogni iterazione.
- La condizione del ciclo i<=$N controlla se i è ancora inferiore o uguale al numero N specificato.
- Se la condizione è vera, il corpo del ciclo viene eseguito.
- sum=$((sum + i)) calcola il nuovo valore di sum aggiungendovi il valore corrente di i. Questo somma i numeri interi da 1 al valore i corrente.
- Dopo ogni iterazione, i++ incrementa il valore di i di 1.
- Il ciclo continua a funzionare finché la condizione i<=$N diventa falsa (quando i diventa maggiore di N).
- Una volta terminato il ciclo, lo script visualizza la somma dei numeri interi da 1 al numero N inserito.
13) Crea uno script che cerchi una parola specifica in un file e ne conti le occorrenze.
Crea un nome script 'word_count.sh'.
#!/bin/bash
echo Inserisci la parola da cercare:
leggi parola_destinazione
echo Inserisci il nome del file:
leggi il nome del file
conteggio=$(grep -o -w $parola_destinazione $nomefile | wc -l)
echo La parola '$target_word' appare $count volte in '$nomefile'.Spiegazione:
- echo Inserisci la parola da cercare:: Questa riga visualizza un messaggio che chiede all'utente di inserire una parola che desidera cercare in un file.
- read target_word: questa riga legge l'input fornito dall'utente e lo memorizza in una variabile denominata target_word.
- echo Inserisci il nome del file:: Questa riga visualizza un messaggio che chiede all'utente di inserire il nome del file in cui desidera cercare.
- read filename: questa riga legge l'input fornito dall'utente e lo memorizza in una variabile denominata filename.
- count=$(grep -o -w $target_word $filename | wc -l): questa riga svolge il lavoro principale dello script. Analizziamolo ulteriormente:
- grep -o -w $parola_destinazione $nomefile: questa parte del comando cerca le occorrenze della parola_destinazione nel nome file specificato. Le opzioni -o e -w assicurano che vengano conteggiate solo le corrispondenze di parole intere.
- |: Questa è una pipe che prende l'output del comando precedente e lo invia come input al comando successivo.
- wc -l: questa parte del comando utilizza il comando wc per contare il numero di righe nell'input. L'opzione -l conta specificamente le righe.
- L'intero comando calcola il conteggio delle occorrenze di target_word nel file e assegna tale conteggio alla variabile coun
14) Spiegare le differenze tra output standard (stdout) ed errore standard (stderr).
La differenza principale tra output standard (stdout) ed errore standard (stderr) è la seguente:
- Uscita standard (stdout): Questo è il flusso di output predefinito in cui va l'output regolare di un comando. Viene visualizzato sul terminale per impostazione predefinita. Puoi reindirizzarlo a un file utilizzando>.
- Errore standard (stderr): Questo è il flusso di output per i messaggi di errore e gli avvisi. Viene visualizzato anche sul terminale per impostazione predefinita. Puoi reindirizzarlo a un file usando 2>.
15) Spiegare il concetto di istruzioni condizionali nello scripting di shell.
Istruzioni condizionali negli script di shell permetterci di prendere decisioni e controllare il flusso del nostro script in base a determinate condizioni. Consentono al nostro script di eseguire diversi set di comandi a seconda che una particolare condizione sia vera o falsa. Le istruzioni condizionali primarie negli script di shell sono l'istruzione if, l'istruzione elif (facoltativa) e l'istruzione else (facoltativa).
Ecco la struttura di base di un'istruzione condizionale nello scripting di shell:
se [condizione]; Poi
# Comandi da eseguire se la condizione è vera
elif [un'altra_condizione]; Poi
# Comandi da eseguire se un'altra_condizione è vera (opzionale)
altro
# Comandi da eseguire se nessuna delle condizioni è vera (opzionale)
EssereSpiegazione:
- [ condizione ] = Comando che valuta la condizione e restituisce uno stato di uscita vero (0) o falso (diverso da zero).
- then = È una parola chiave che indica che i comandi successivi verranno eseguiti se la condizione risulta vera.
- elif = (abbreviazione di else if) È una sezione che ci permette di specificare condizioni aggiuntive da verificare.
- else = è una sezione che contiene comandi che verranno eseguiti se nessuna delle condizioni è vera.
- fi = È una parola chiave che segna la fine del blocco condizionale.
16) Come si leggono le righe da un file all'interno di uno script di shell?
A leggere le righe da un file all'interno di uno script di shell, possiamo usare vari metodi, ma un approccio comune è usare un ciclo while in combinazione con il comando read. Ecco come possiamo farlo:
#!/bin/bash
file=/home/jayeshkumar/jayesh.txt
# Controlla se il file esiste
if [ -e $file ]; Poi
mentre IFS= leggi -r riga; Fare
echo Riga letta: $riga
# Aggiungi qui la tua logica di elaborazione
fatto <$file
altro
echo File non trovato: $file
EssereSpiegazione:
- #!/bin/bash: questa è la riga shebang che specifica l'interprete (/bin/bash) da utilizzare per eseguire lo script.
- file=/home/jayeshkumar/jayesh.txt: questa riga definisce la variabile file e assegna il percorso completo al file jayesh.txt nella directory /home/jayeshkumar. Modifica questo percorso in modo che corrisponda al percorso effettivo del file che desideri leggere.
- if [ -e $file ]; then: questa riga inizia un'istruzione if. Controlla se il file specificato dalla variabile $file esiste. Il flag -e controlla l'esistenza del file.
- mentre IFS= leggi -r riga; do: questa riga avvia un ciclo while che legge le righe dal file.
- IFS=: IFS (Separatore di campo interno) è impostato su un valore vuoto per preservare gli spazi iniziali e finali.
- read -r line: legge la riga corrente dal file e la memorizza nella variabile line.
- echo Line read: $line: questa riga stampa il contenuto della riga letta dal file. La variabile $line contiene il contenuto della riga corrente.
- # Aggiungi qui la tua logica di elaborazione: questo è un commento segnaposto in cui puoi aggiungere la tua logica per elaborare ogni riga. Ad esempio, potresti analizzare la riga, estrarre informazioni o eseguire azioni specifiche in base al contenuto.
- done <$file: segna la fine del ciclo while. Il < $file reindirizza il contenuto del file affinché venga letto dal ciclo.
- else: se il file non esiste (la condizione nell'istruzione if è falsa), lo script esegue il codice nel ramo else.
- echo File non trovato: $file: questa riga stampa un messaggio di errore indicando che il file specificato non è stato trovato.
- fi: questa riga segna la fine dell'istruzione if.
file di lettura
Qui abbiamo usato ` pwd ` comando per ottenere il percorso della directory corrente.
17) Scrivere una funzione in uno script di shell che calcoli il fattoriale di un dato numero.
Ecco la sceneggiatura checalcolare il fattorialedi un dato numero.
#!/bin/bash
# Definisce una funzione per calcolare il fattoriale
calcola_fattoriale() {
numero=$1
fatto=1
for ((i=1; i<=num; i++)); Fare
fatto=$((fatto * i))
Fatto
eco $fatto
}
# Richiede all'utente di inserire un numero
eco Inserisci un numero:
leggi input_num
# Chiama la funzione calcola_fattoriale con il numero immesso
risultato_fattoriale=$(calcola_fattoriale $num_input)
# Visualizza il risultato fattoriale
echo Fattoriale di $input_num è: $fattoriale_risultatoSpiegazione:
- Lo script inizia con la riga #!/bin/bash per specificare l'interprete.
- calcola_fattoriale() è definita come una funzione. Richiede un argomento, num, che è il numero per il quale deve essere calcolato il fattoriale.
- All'interno della funzione, il fatto è inizializzato su 1. Questa variabile memorizzerà il risultato fattoriale.
- Il ciclo for ripete da 1 al numero specificato (num). In ogni iterazione, moltiplica il valore corrente di fact per l'indice del ciclo i.
- Una volta completato il ciclo, la variabile fact contiene il fattoriale calcolato.
- Lo script richiede all'utente di inserire un numero utilizzando read.
- La funzione calcola_fattoriale viene chiamata con il numero fornito dall'utente e il risultato viene archiviato nella variabile fattoriale_result.
- Infine, lo script visualizza il risultato fattoriale calcolato.
Fattoriale
18) Come gestisci segnali come Ctrl+C in uno script di shell?
In uno script di shell, puoi gestire segnali come Ctrl+C (noto anche come SIGINT) utilizzando il comando trap. Ctrl+C genera un segnale SIGINT quando l'utente lo preme per interrompere lo script o il programma in esecuzione. Utilizzando il comando trap è possibile specificare le azioni da intraprendere quando viene ricevuto un particolare segnale. Ecco come gestisci segnali come Ctrl+C in uno script di shell:
#!/bin/bash
ripulire() {
echo Script interrotto. Esecuzione della pulizia…
# Aggiungi qui le tue azioni di pulizia
uscita 1
}
# Imposta una trappola per chiamare la funzione di pulizia quando viene ricevuto Ctrl+C (SIGINT).
pulizia trap SIGINT
# Resto del tuo script
eco Correndo...
dormire 10
eco Finito.La gestione dei segnali è importante per rendere gli script robusti e garantire che gestiscano correttamente le interruzioni impreviste. Puoi personalizzare la funzione di pulizia in base alle tue esigenze specifiche, come chiudere file, arrestare processi o registrare informazioni prima della chiusura dello script.
Spiegazione:
- #!/bin/bash: questa riga Shebang specifica l'interprete da utilizzare per eseguire lo script.
- cleanup() { … }: definisce una funzione denominata cleanup. All'interno di questa funzione è possibile includere qualsiasi azione da eseguire quando lo script viene interrotto, come la chiusura di file, il rilascio di risorse o l'esecuzione di altre attività di pulizia.
- trap cleanup SIGINT: il comando trap viene utilizzato per impostare un gestore di segnale. In questo caso specifica che quando viene ricevuto il segnale SIGINT (Ctrl+C), deve essere eseguita la funzione di pulizia.
- echo Running…, sleep 10, echo Finished.: Questi sono solo comandi di esempio per simulare l'esecuzione di uno script.
19) Crea uno script che controlli e rimuova le righe duplicate in un file di testo.
Ecco il nostro script Linux in cui rimuoveremo le righe duplicate da un file di testo.
#!/bin/bash
file_input=input.txt
file_output=output.txt
ordina $file_input | uniq> $file_output
echo Righe duplicate rimosse con successo.Spiegazione:
- Lo script inizia con uno shebang (#!/bin/bash), che indica che lo script deve essere interpretato utilizzando la shell Bash.
- La variabile input_file è impostata sul nome del file di input contenente righe duplicate (cambialo con il nome effettivo del file di input).
- La variabile output_file è impostata sul nome del file di output in cui verranno rimossi i duplicati (cambialo con il nome del file di output desiderato).
- Lo script utilizza il comando sort per ordinare le righe nel file di input. L'ordinamento delle righe garantisce che le righe duplicate vengano raggruppate insieme.
- Le righe ordinate vengono quindi passate attraverso il comando uniq, che rimuove le righe duplicate consecutive. L'output di questo processo viene reindirizzato al file di output.
- Dopo che i duplicati sono stati rimossi, lo script stampa un messaggio di successo.
rimozione della riga duplicata
Qui usiamo ` gatto ` per visualizzare il testo all'interno del file di testo.
20) Scrivere uno script che generi una password casuale sicura.
Ecco il nostro script per generare una password casuale sicura.
#!/bin/bash
# Funzione per generare una password casuale
genera password() {
tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
}
# Chiama la funzione e memorizza la password generata
password=$(genera_password)
echo Password generata: $passwordNota: l'utente può modificare di conseguenza la lunghezza della password, sostituendo il numero '12'.
Spiegazione:
- Lo script inizia con uno shebang (#!/bin/bash), che indica che dovrebbe essere interpretato utilizzando la shell Bash.
- La funzione generate_password è definita per generare una password casuale. Ecco come funziona:
- tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
- fold -w 12 suddivide i dati casuali filtrati in righe di larghezza 12 caratteri ciascuna.
- head -n 1 seleziona la prima riga, dandoci effettivamente una sequenza casuale di caratteri di lunghezza 12.
- Alla variabile password viene assegnato il risultato della chiamata alla funzione generate_password.
- Infine, la password generata viene visualizzata utilizzando echo.
21) Scrivere uno script di shell che calcoli la dimensione totale di tutti i file in una directory.
Ecco uno script di shell per calcolare la dimensione totale di tutti i file in una directory.
#!/bin/bash
directory=/percorso/della/tua/directory
dimensione_totale=$(du -csh $directory | grep totale | awk ‘{print $1}’)
echo Dimensione totale dei file nella $directory: $total_sizeSpiegazione:
- Lo script inizia con il comando #!/bin/bash, che indica che dovrebbe essere interpretato utilizzando la shell Bash.
- La variabile directory è impostata sul percorso della directory per la quale si desidera calcolare la dimensione totale del file. Sostituisci /percorso/della/tua/directory con il percorso effettivo.
- Il comando du viene utilizzato per stimare l'utilizzo dello spazio file. Le opzioni utilizzate sono:
- -c: produce un totale complessivo.
- -s: visualizza solo la dimensione totale della directory specificata.
- -h: stampa le dimensioni in un formato leggibile dall'uomo (ad esempio, KB, MB, GB).
- L'output di du viene reindirizzato a grep total per filtrare la riga che contiene la dimensione totale.
- awk '{print $1}' viene utilizzato per estrarre il primo campo (dimensione totale) dalla riga.
- La dimensione totale calcolata viene archiviata nella variabile total_size.
- Infine, lo script visualizza la dimensione totale utilizzando echo.
Dimensione totale dei file
Qui abbiamo usato ` pwd `comando per vedere il percorso della directory corrente.
22) Spiegare la differenza tra le istruzioni if ed elif nello scripting di shell.
Caratteristica 'se' Staiftement Dichiarazione 'elif'. Scopo Spiegare la differenza tra le istruzioni if ed elif nello scripting di shell. Fornisce condizioni alternative per verificare quando la condizione if iniziale è falsa. utilizzo Utilizzato per la condizione iniziale. Utilizzato dopo la condizione if iniziale per verificare condizioni aggiuntive. numero di blocchi Può averne solo uno se bloccato. Può avere più blocchi elif, ma solo un altro blocco (opzionale). Esecuzione Esegue il blocco di codice associato all'istruzione if se la condizione è vera. Se la condizione è falsa, viene eseguito il blocco else (se presente) (opzionale). Controlla ciascuna condizione elif in ordine. Se una condizione elif è vera, viene eseguito il blocco di codice corrispondente e lo script esce dall'intero blocco condizionale. Se nessuna delle condizioni elif è vera, viene eseguito il blocco else (se presente). Strutture nidificate Può essere nidificato all'interno di altri blocchi if, elif o else. Non può essere annidato all'interno di un altro blocco elif, ma può essere utilizzato all'interno di un blocco if or else. Cerchiamo di capirlo con un esempio.
#!/bin/bash
numero=5
if [$numero -gt 10]; Poi
echo $numero è maggiore di 10
altro
echo $numero non è maggiore di 10
Essere
eco ---
if [$numero -gt 10]; Poi
echo $numero è maggiore di 10
elif [$numero -eq 10]; Poi
echo $numero è uguale a 10
altro
echo $numero è inferiore a 10
EssereSpiegazione:
In questo esempio, il primo blocco if controlla se numero è maggiore di 10. In caso contrario, stampa un messaggio che indica che il numero non è maggiore di 10. Il secondo blocco con istruzioni elif controlla più condizioni in sequenza finché una di esse è vera. In questo caso, poiché il valore di number è 5, l'output sarà:
if_elif differenza
23) Come si usa un ciclo while per eseguire ripetutamente comandi?
Un ciclo while viene utilizzato negli script di shell per eseguire ripetutamente una serie di comandi finché una condizione specificata è vera. Il ciclo continua a eseguire i comandi finché la condizione non diventa falsa.
Ecco la sintassi di base di un ciclo while:
mentre [condizione]; Fare
# Comandi da eseguire
FattoSpiegazione:
- Il ciclo ` while` inizia con la parola chiave ` while` seguita da una condizione racchiusa tra parentesi quadre `[ ]`.
- Il corpo del ciclo, che contiene i comandi da eseguire, è racchiuso tra le parole chiave `do` e `done`.
- Il ciclo controlla innanzitutto la condizione. Se la condizione è vera, vengono eseguiti i comandi all'interno del corpo del ciclo. Dopo l'esecuzione del corpo del ciclo, la condizione viene verificata nuovamente e il processo si ripete finché la condizione non diventa falsa.
Esempio: Se vogliamo stampare i numeri da 1 a 5
#!/bin/bash
contatore=1
while [ $contatore -le 5 ]; Fare
echo Numero: $contatore
contatore=$((contatore + 1))
FattoSpiegazione:
- La variabile del contatore è impostata su 1.
- Il ciclo while controlla se il valore del contatore è inferiore o uguale a 5. Finché questa condizione è vera, il ciclo continua l'esecuzione.
- All'interno del ciclo, il valore corrente del contatore viene stampato utilizzando echo.
- Il contatore viene incrementato di 1 utilizzando l'espressione $((contatore + 1)).
ciclo while
24) Creare uno script di shell che trovi ed elenchi tutti i file vuoti in una directory.
Script di shell che puoi utilizzare per trovare ed elencare tutti i file vuoti in una directory utilizzando i comandi 'find' e 'stat':
#!/bin/bash
directory=$1″
if [ -z $directory ]; Poi
eco Utilizzo: $ 0
uscita 1
EssereSe [ ! -d $directory]; Poi
echo Errore: '$directory' non è una directory valida.
uscita 1
Essere
echo File vuoti nella directory $:
trova $directory -tipo f -emptySpiegazione:
- ` #!/bin/bash `: Questo si chiama shebang e dice al sistema operativo di utilizzare la shell Bash per interpretare ed eseguire lo script.
- ` directory=$1″ `: questa riga assegna il primo argomento della riga di comando (indicato con $1) alla variabile ` directory `.
- ` if [ -z $directory ]; Poi `: questa riga inizia un'istruzione if che controlla se il ` directory ` la variabile è vuota (-z verifica una stringa vuota).
- ` eco Utilizzo: $ 0 `: Se la directory è vuota, questa riga stampa un messaggio di utilizzo, dove ` $ 0 ` rappresenta il nome dello script.
- ` uscita 1 `: questa riga esce dallo script con il codice di uscita ` 1 ', indicando un errore.
- ` Essere `: questa riga segna la fine del ` Se 'dichiarazione.
- ` Se [ ! -d $directory]; Poi `: avvia un'altra istruzione if per verificare se la directory fornita esiste (` -D ` verifica una directory).
- ` echo Errore: '$directory' non è una directory valida. `: Se la directory fornita non esiste, questa riga stampa un messaggio di errore.
- ` uscita 1 `: esce dallo script con il codice di uscita ` 1 `.
- ` Essere `: Segna la fine del secondo ` se` dichiarazione.
- ` echo File vuoti nella directory $: `: Se finora tutto è valido, questa riga stampa un messaggio che indica che lo script elencherà i file vuoti nella directory specificata.
- ` trova $directory -tipo f -empty `: questa riga utilizza il ` Trovare ` comando per cercare file vuoti (` -vuoto `) di tipo file regolari (` -tipo f `) nella directory specificata. Quindi elenca questi file vuoti.
Trovare file vuoti
Nota : Dobbiamo fornire una directory come argomento durante l'esecuzione dello script. Qui abbiamo utilizzato il percorso della directory corrente home/jayeshkumar/
25) Qual è lo scopo del comando read nello scripting di shell?
Il comando read nello scripting della shell consente allo script di chiederti informazioni. È come quando un computer ti fa una domanda e aspetta la tua risposta. Ciò è utile per gli script che richiedono la digitazione di qualcosa o quando lo script deve lavorare con le informazioni dei file. Il comando read aiuta lo script a fermarsi e ad attendere ciò che digiti, quindi può utilizzare tali informazioni per fare più cose nello script.
Sintassi del comando di lettura:
read variable_name>Esempio : Se vogliamo prendere il nome come input dall'utente per stamparlo.
#!/bin/bash
echo Inserisci il tuo nome:
leggere il nome
echo Ciao, $nome!leggi nome
In sintesi, il comando read viene utilizzato per acquisire input o dati dell'utente da file all'interno degli script di shell, rendendo gli script più interattivi e versatili.
26) Scrivere uno script di shell che converta tutti i nomi di file in una directory in minuscolo.
Ecco uno script di shell che converte tutti i nomi di file in una directory in minuscolo.
#!/bin/bash
directory=$1″
if [ -z $directory ]; Poi
eco Utilizzo: $ 0
uscita 1
EssereSe [ ! -d $directory]; Poi
echo Errore: '$directory' non è una directory valida.
uscita 1
Esserecd $directory || uscita 1
per file in *; Fare
if [ -f $file ]; Poi
nuovonome=$(echo $file | tr 'A-Z' 'a-z')
[ $file != $nuovonome ] && mv $file $nuovonome
Essere
FattoSpiegazione:
- #!/bin/bash : Questo è lo shebang, specificando che lo script deve essere interpretato utilizzando la shell Bash.
- directory=$1″ : Questa riga assegna il primo argomento della riga di comando alla directory delle variabili.
- if [ -z $directory ]; Poi : Questa riga controlla se la variabile di directory è vuota (nessun argomento fornito durante l'esecuzione dello script).
- eco Utilizzo: $ 0 : Se la directory è vuota, questa riga stampa un messaggio di utilizzo con il nome dello script ($0).
- uscita 1 : Questa riga esce dallo script con un codice di uscita pari a 1, indicando che si è verificato un errore.
- F i: segna la fine della prima istruzione if.
- Se [ ! -d $directory]; Poi : Questa riga controlla se la directory specificata non esiste (-d verifica una directory).
- echo Errore: '$directory' non è una directory valida. : Se la directory specificata non esiste, questa riga stampa un messaggio di errore.
- uscita 1 : esce dallo script con il codice di uscita 1.
- Essere : segna la fine della seconda istruzione if.
- cd $directory || uscita 1 : modifica la directory di lavoro corrente nella directory specificata. Se il cambio di directory fallisce (ad esempio, directory inesistente), lo script termina con un codice di errore.
- per file in *; Fare: IO per file in *; Fare: avvia un ciclo che ripete tutti gli elementi nella directory corrente (* corrisponde a tutti i nomi di file).
- if [ -f $file ]; Poi : controlla se l'elemento dell'iterazione del ciclo corrente è un file normale (-f verifica un file normale).
- nuovonome=$(echo $file | tr 'A-Z' 'a-z') : Converte il nome file corrente ($file) in minuscolo utilizzando il comando tr e memorizza il risultato nella variabile newname.
- [ $file != $nuovonome ] && mv $file $nuovonome : confronta il nome file originale con il nuovo nome file minuscolo. Se sono diversi, rinomina il file utilizzando il comando mv.
- Essere : segna la fine dell'istruzione if interna.
- Fatto : Contrassegna la fine del ciclo.
Nota : Dobbiamo fornire una directory come argomento durante l'esecuzione dello script. Qui abbiamo utilizzato il percorso della directory corrente home/jayeshkumar/test
27) Come si possono usare le operazioni aritmetiche all'interno di uno script di shell?
Le operazioni aritmetiche possono essere eseguite all'interno di uno script di shell utilizzando vari metodi integrati. La shell fornisce meccanismi per semplici calcoli aritmetici utilizzando l'espansione aritmetica Come:
- Espansione aritmetica ($((…)))
- Utilizzando il comando expr
- Usando let Comando
Ecco il nostro script Shell che spiega tutti e tre i metodi per le operazioni aritmetiche.
#!/bin/bash
numero1=10
numero2=5#Espansione aritmetica ($((…)))
risultato=$((num1 + num2))
echo Somma: $risultato#Utilizzo del comando expr
somma=$(espr $num1 + $num2)
echo Somma: $somma#Utilizzando let Command
sia somma = num1 + num2
echo Somma: $sommaSpiegazione:
- `#!/bin/bash` : Questo è lo shebang, specificando che lo script deve essere interpretato utilizzando la shell Bash.
- 'num1=10'. e ` num2=5` : Queste righe assegnano i valori 10 e 5 alle variabili ` numero1 'e''. numero2 ', rispettivamente.
- `#Espansione aritmetica ($((…)))` : Questo è un commento che indica l'inizio della sezione che dimostra l'espansione aritmetica.
- `risultato=$((num1 + num2))` : Questa riga utilizza l'espansione aritmetica per calcolare la somma di ` numero1 'e''. numero2 ` e memorizza il risultato nel file ` risultato `variabile.
- 'echo Somma: $risultato'. : Questa riga stampa la somma calcolata utilizzando il valore memorizzato nel file ` risultato `variabile.
- '#Utilizzo del comando expr'. : Questo è un commento che indica l'inizio della sezione che dimostra l'uso del ` espr ` comando per operazioni aritmetiche.
- `somma=$(espr $num1 + $num2)` : Questa riga utilizza il ` espr ` comando per calcolare la somma di ` numero1 'e''. numero2 ` e memorizza il risultato nel file ` somma `variabile. Si noti che il ` espr Il comando ` richiede spazi attorno agli operatori.
- `echo Somma: $somma` : Questa riga stampa la somma calcolata utilizzando il valore memorizzato nel file ` somma `variabile.
- `#Utilizzando lascia Comando` : Questo è un commento che indica l'inizio della sezione che dimostra l'uso del ` permettere ` comando per operazioni aritmetiche.
- `somma = num1 + num2″` : Questa riga utilizza il ` permettere ` comando per calcolare la somma di ` numero1 'e''. numero2 ` e assegna il risultato a ` somma `variabile. Il ` permettere Il comando ` non richiede spazi attorno agli operatori.
- `echo Somma: $somma` : Questa riga stampa la somma calcolata utilizzando il valore memorizzato nel file ` somma `variabile.
aritmetica
28) Creare uno script che controlli se un host di rete è raggiungibile.
Ecco un semplice script di shell che utilizza il comando ping per verificare se un host di rete è raggiungibile:
#!/bin/bash
ospite=$1″
if [ -z $host ]; Poi
eco Utilizzo: $ 0
uscita 1
Essere
ping -c 4 $host
se [$? -eq0]; Poi
echo $host è raggiungibile.
altro
echo $host non è raggiungibile.
EssereSpiegazione:
- Prende un nome host o un indirizzo IP come argomento e controlla se l'argomento viene fornito.
- Se non viene fornito alcun argomento, visualizza un messaggio di utilizzo ed esce.
- Utilizza il comando ping con l'opzione -c 4 per inviare quattro richieste echo ICMP all'host specificato.
- Dopo l'esecuzione, il comando ping controlla lo stato di uscita ($?). Se lo stato di uscita è 0, significa che l'host è raggiungibile e lo script stampa un messaggio di successo. Altrimenti, stampa un messaggio di errore.
Nota : Dobbiamo fornire un nome host come argomento durante l'esecuzione dello script. Qui abbiamo utilizzato google.com
29) Scrivi uno script di shell per trovare l'elemento più grande in un array:
Ecco uno script di shell per trovare l'elemento più grande in un array.
#!/bin/bash
# Dichiara un array
matrice=(3 56 24 89 67)# Inizializza una variabile per memorizzare il valore massimo, iniziando dal primo elemento
massimo=${array[0]}
# Itera attraverso l'array
per numero in ${array[@]}; Fare
# Confronta ogni elemento con il massimo corrente
se ((num> max)); Poi
massimo=$num
Essere
Fatto# Stampa il valore massimo
echo L'elemento massimo nell'array è: $max
Spiegazione:
- ` #!/bin/bash `: La riga shebang specifica che lo script deve essere interpretato utilizzando la shell Bash.
- ` matrice=(3 56 24 89 67) `: L'array viene dichiarato e inizializzato con valori.
- ` massimo=${array[0]} `: `max` viene inizializzato con il primo elemento dell'array.
- ` per numero in ${array[@]}; Fare `: Un ciclo `for` viene utilizzato per scorrere gli elementi dell'array.
- ` se ((num> max)); Poi `: un'istruzione `if` controlla se l'elemento corrente `num` è maggiore del massimo corrente `max`.
- ` max=$num`: Se`num ` è maggiore di `max`, `max` viene aggiornato con il valore di num.
- ` Fatto `: Il ciclo `for` è chiuso.
- ` echo L'elemento massimo nell'array è: $max `: Infine, lo script stampa il valore massimo trovato nell'array.
numero maggiore
30) Scrivere uno script per calcolare la somma degli elementi in un array.
#!/bin/bash
# Dichiara un array
matrice=(1 65 22 19 94)
# Inizializza una variabile per memorizzare la somma
somma=0
# Scorrere l'array e aggiungere ogni elemento alla somma
per numero in ${array[@]}; Fare
am=$((am + am))
Fatto# Stampa la somma
echo La somma degli elementi nell'array è: $sum
Spiegazione:
` #!/bin/bash `: La riga shebang specifica che lo script deve essere interpretato utilizzando la shell Bash.
` matrice=(1 65 22 19 94) `: L'array viene dichiarato e inizializzato con valori.
` somma=0 `:` somma ` viene inizializzato a zero per contenere la somma degli elementi.
` per numero in ${array[@]}; Fare `: Un` per Il ciclo ` viene utilizzato per scorrere gli elementi dell'array.
` am=$((am + am)) `: All'interno del ciclo, ogni elemento ` nessuno ' viene aggiunto a ' somma `variabile.
` Fatto `: Il ` per `il ciclo è chiuso.
`echo La somma degli elementi nell'array è: $sum`: Infine, lo script stampa la somma di tutti gli elementi nell'array.
Somma degli elementi
Ulteriori informazioni sugli script di shell
- Differenza tra shell e kernel
- Differenza tra Shell vincolata e Shell inversa
- Introduzione alla shell Linux e allo scripting della shell
Conclusione
Tutti i geek sappiamo che lo script di shell è molto utile per aumentare la produttività del lavoro e anche per risparmiare tempo. Quindi, in questo articolo abbiamo trattato 30 esempi di script di shell molto utili e la maggior parte dei truffatori . Ci auguriamo che questa guida completa sull'esempio di scripting di shell ti aiuti a comprendere tutto sugli script di shell.
echo Primo argomento:
echo Secondo argomento:
Se eseguiamo lo script con `.example.sh ciao_1 ciao_2`, verrà restituito:

argomenti cli
11) Come si usa il ciclo for per scorrere un elenco di valori?
Crea un nome script 'example.sh'.
#!/bin/bash
frutta=(mela banana ciliegia dattero)
per frutta in ${frutta[@]}; Fare
echo Frutto corrente: $frutto
Fatto
Spiegazione:
La riga `fruits=` crea un array denominato Fruits con quattro elementi: mela, banana, ciliegia e data.
- per frutta in ${frutta[@]}; do: questa riga avvia un ciclo for. Ecco cosa significa ciascuna parte:
- for fruit: dichiara una variabile di ciclo chiamata fruit. In ogni iterazione del ciclo, frutta manterrà il valore dell'elemento corrente dall'array frutti.
- ${frutti[@]}: questa è un'espansione dell'array che prende tutti gli elementi dall'array frutti. La sintassi ${…} garantisce che ogni elemento venga trattato come un elemento separato.
- do: questa parola chiave segna l'inizio del corpo del ciclo.
- echo Frutto corrente: $frutto: all'interno del ciclo, questa riga utilizza il comando echo per visualizzare il valore corrente della variabile del ciclo frutto. Stampa un messaggio come Frutto corrente: mela per ogni frutto nell'array.
- done: questa parola chiave segna la fine del corpo del ciclo. Indica allo script che il ciclo è terminato.

per ciclo
12) Scrivere uno script di shell che calcoli la somma degli interi da 1 a N utilizzando un ciclo.
Crea un nome script 'example.sh'.
#!/bin/bash
echo Inserisci un numero (N):
leggi n
somma=0
for (( i=1; i<=$N; i++ )); Fare
somma=$((somma + i))
Fatto
echo La somma dei numeri interi da 1 a $N è: $sum
Spiegazione:
Lo script inizia chiedendoti di inserire un numero (N) usando read. Questo numero determinerà quante volte verrà eseguito il ciclo.
- La variabile somma è inizializzata su 0. Questa variabile manterrà traccia della somma dei numeri interi.
- Il ciclo for inizia con for (( i=1; i<=$N; i++ )). Questa struttura ad anello viene utilizzata per ripetere una serie di azioni un certo numero di volte, in questo caso da 1 al valore di N.
- All'interno del ciclo accadono queste cose:
- i=1 imposta la variabile del ciclo i su 1 all'inizio di ogni iterazione.
- La condizione del ciclo i<=$N controlla se i è ancora inferiore o uguale al numero N specificato.
- Se la condizione è vera, il corpo del ciclo viene eseguito.
- sum=$((sum + i)) calcola il nuovo valore di sum aggiungendovi il valore corrente di i. Questo somma i numeri interi da 1 al valore i corrente.
- Dopo ogni iterazione, i++ incrementa il valore di i di 1.
- Il ciclo continua a funzionare finché la condizione i<=$N diventa falsa (quando i diventa maggiore di N).
- Una volta terminato il ciclo, lo script visualizza la somma dei numeri interi da 1 al numero N inserito.
13) Crea uno script che cerchi una parola specifica in un file e ne conti le occorrenze.
Crea un nome script 'word_count.sh'.
#!/bin/bash
echo Inserisci la parola da cercare:
leggi parola_destinazione
echo Inserisci il nome del file:
leggi il nome del file
conteggio=$(grep -o -w $parola_destinazione $nomefile | wc -l)
echo La parola '$target_word' appare $count volte in '$nomefile'.
Spiegazione:
- echo Inserisci la parola da cercare:: Questa riga visualizza un messaggio che chiede all'utente di inserire una parola che desidera cercare in un file.
- read target_word: questa riga legge l'input fornito dall'utente e lo memorizza in una variabile denominata target_word.
- echo Inserisci il nome del file:: Questa riga visualizza un messaggio che chiede all'utente di inserire il nome del file in cui desidera cercare.
- read filename: questa riga legge l'input fornito dall'utente e lo memorizza in una variabile denominata filename.
- count=$(grep -o -w $target_word $filename | wc -l): questa riga svolge il lavoro principale dello script. Analizziamolo ulteriormente:
- grep -o -w $parola_destinazione $nomefile: questa parte del comando cerca le occorrenze della parola_destinazione nel nome file specificato. Le opzioni -o e -w assicurano che vengano conteggiate solo le corrispondenze di parole intere.
- |: Questa è una pipe che prende l'output del comando precedente e lo invia come input al comando successivo.
- wc -l: questa parte del comando utilizza il comando wc per contare il numero di righe nell'input. L'opzione -l conta specificamente le righe.
- L'intero comando calcola il conteggio delle occorrenze di target_word nel file e assegna tale conteggio alla variabile coun
14) Spiegare le differenze tra output standard (stdout) ed errore standard (stderr).
La differenza principale tra output standard (stdout) ed errore standard (stderr) è la seguente:
- Uscita standard (stdout): Questo è il flusso di output predefinito in cui va l'output regolare di un comando. Viene visualizzato sul terminale per impostazione predefinita. Puoi reindirizzarlo a un file utilizzando>.
- Errore standard (stderr): Questo è il flusso di output per i messaggi di errore e gli avvisi. Viene visualizzato anche sul terminale per impostazione predefinita. Puoi reindirizzarlo a un file usando 2>.
15) Spiegare il concetto di istruzioni condizionali nello scripting di shell.
Istruzioni condizionali negli script di shell permetterci di prendere decisioni e controllare il flusso del nostro script in base a determinate condizioni. Consentono al nostro script di eseguire diversi set di comandi a seconda che una particolare condizione sia vera o falsa. Le istruzioni condizionali primarie negli script di shell sono l'istruzione if, l'istruzione elif (facoltativa) e l'istruzione else (facoltativa).
Ecco la struttura di base di un'istruzione condizionale nello scripting di shell:
se [condizione]; Poi
# Comandi da eseguire se la condizione è vera
elif [un'altra_condizione]; Poi
# Comandi da eseguire se un'altra_condizione è vera (opzionale)
altro
# Comandi da eseguire se nessuna delle condizioni è vera (opzionale)
Essere
Spiegazione:
- [ condizione ] = Comando che valuta la condizione e restituisce uno stato di uscita vero (0) o falso (diverso da zero).
- then = È una parola chiave che indica che i comandi successivi verranno eseguiti se la condizione risulta vera.
- elif = (abbreviazione di else if) È una sezione che ci permette di specificare condizioni aggiuntive da verificare.
- else = è una sezione che contiene comandi che verranno eseguiti se nessuna delle condizioni è vera.
- fi = È una parola chiave che segna la fine del blocco condizionale.
16) Come si leggono le righe da un file all'interno di uno script di shell?
A leggere le righe da un file all'interno di uno script di shell, possiamo usare vari metodi, ma un approccio comune è usare un ciclo while in combinazione con il comando read. Ecco come possiamo farlo:
#!/bin/bash
file=/home/jayeshkumar/jayesh.txt
# Controlla se il file esiste
if [ -e $file ]; Poi
mentre IFS= leggi -r riga; Fare
echo Riga letta: $riga
# Aggiungi qui la tua logica di elaborazione
fatto <$file
altro
echo File non trovato: $file
Essere
Spiegazione:
- #!/bin/bash: questa è la riga shebang che specifica l'interprete (/bin/bash) da utilizzare per eseguire lo script.
- file=/home/jayeshkumar/jayesh.txt: questa riga definisce la variabile file e assegna il percorso completo al file jayesh.txt nella directory /home/jayeshkumar. Modifica questo percorso in modo che corrisponda al percorso effettivo del file che desideri leggere.
- if [ -e $file ]; then: questa riga inizia un'istruzione if. Controlla se il file specificato dalla variabile $file esiste. Il flag -e controlla l'esistenza del file.
- mentre IFS= leggi -r riga; do: questa riga avvia un ciclo while che legge le righe dal file.
- IFS=: IFS (Separatore di campo interno) è impostato su un valore vuoto per preservare gli spazi iniziali e finali.
- read -r line: legge la riga corrente dal file e la memorizza nella variabile line.
- echo Line read: $line: questa riga stampa il contenuto della riga letta dal file. La variabile $line contiene il contenuto della riga corrente.
- # Aggiungi qui la tua logica di elaborazione: questo è un commento segnaposto in cui puoi aggiungere la tua logica per elaborare ogni riga. Ad esempio, potresti analizzare la riga, estrarre informazioni o eseguire azioni specifiche in base al contenuto.
- done <$file: segna la fine del ciclo while. Il < $file reindirizza il contenuto del file affinché venga letto dal ciclo.
- else: se il file non esiste (la condizione nell'istruzione if è falsa), lo script esegue il codice nel ramo else.
- echo File non trovato: $file: questa riga stampa un messaggio di errore indicando che il file specificato non è stato trovato.
- fi: questa riga segna la fine dell'istruzione if.

file di lettura
Qui abbiamo usato ` pwd ` comando per ottenere il percorso della directory corrente.
17) Scrivere una funzione in uno script di shell che calcoli il fattoriale di un dato numero.
Ecco la sceneggiatura checalcolare il fattorialedi un dato numero.
#!/bin/bash
# Definisce una funzione per calcolare il fattoriale
calcola_fattoriale() {
numero=
fatto=1
for ((i=1; i<=num; i++)); Fare
fatto=$((fatto * i))
Fatto
eco $fatto
}
# Richiede all'utente di inserire un numero
eco Inserisci un numero:
leggi input_num
# Chiama la funzione calcola_fattoriale con il numero immesso
risultato_fattoriale=$(calcola_fattoriale $num_input)
# Visualizza il risultato fattoriale
echo Fattoriale di $input_num è: $fattoriale_risultato
Spiegazione:
- Lo script inizia con la riga #!/bin/bash per specificare l'interprete.
- calcola_fattoriale() è definita come una funzione. Richiede un argomento, num, che è il numero per il quale deve essere calcolato il fattoriale.
- All'interno della funzione, il fatto è inizializzato su 1. Questa variabile memorizzerà il risultato fattoriale.
- Il ciclo for ripete da 1 al numero specificato (num). In ogni iterazione, moltiplica il valore corrente di fact per l'indice del ciclo i.
- Una volta completato il ciclo, la variabile fact contiene il fattoriale calcolato.
- Lo script richiede all'utente di inserire un numero utilizzando read.
- La funzione calcola_fattoriale viene chiamata con il numero fornito dall'utente e il risultato viene archiviato nella variabile fattoriale_result.
- Infine, lo script visualizza il risultato fattoriale calcolato.

Fattoriale
18) Come gestisci segnali come Ctrl+C in uno script di shell?
In uno script di shell, puoi gestire segnali come Ctrl+C (noto anche come SIGINT) utilizzando il comando trap. Ctrl+C genera un segnale SIGINT quando l'utente lo preme per interrompere lo script o il programma in esecuzione. Utilizzando il comando trap è possibile specificare le azioni da intraprendere quando viene ricevuto un particolare segnale. Ecco come gestisci segnali come Ctrl+C in uno script di shell:
#!/bin/bash
ripulire() {
echo Script interrotto. Esecuzione della pulizia…
# Aggiungi qui le tue azioni di pulizia
uscita 1
}
# Imposta una trappola per chiamare la funzione di pulizia quando viene ricevuto Ctrl+C (SIGINT).
pulizia trap SIGINT
# Resto del tuo script
eco Correndo...
dormire 10
eco Finito.
La gestione dei segnali è importante per rendere gli script robusti e garantire che gestiscano correttamente le interruzioni impreviste. Puoi personalizzare la funzione di pulizia in base alle tue esigenze specifiche, come chiudere file, arrestare processi o registrare informazioni prima della chiusura dello script.
Spiegazione:
- #!/bin/bash: questa riga Shebang specifica l'interprete da utilizzare per eseguire lo script.
- cleanup() { … }: definisce una funzione denominata cleanup. All'interno di questa funzione è possibile includere qualsiasi azione da eseguire quando lo script viene interrotto, come la chiusura di file, il rilascio di risorse o l'esecuzione di altre attività di pulizia.
- trap cleanup SIGINT: il comando trap viene utilizzato per impostare un gestore di segnale. In questo caso specifica che quando viene ricevuto il segnale SIGINT (Ctrl+C), deve essere eseguita la funzione di pulizia.
- echo Running…, sleep 10, echo Finished.: Questi sono solo comandi di esempio per simulare l'esecuzione di uno script.
19) Crea uno script che controlli e rimuova le righe duplicate in un file di testo.
Ecco il nostro script Linux in cui rimuoveremo le righe duplicate da un file di testo.
vuoto 0
#!/bin/bash
file_input=input.txt
file_output=output.txt
ordina $file_input | uniq> $file_output
echo Righe duplicate rimosse con successo.
Spiegazione:
- Lo script inizia con uno shebang (#!/bin/bash), che indica che lo script deve essere interpretato utilizzando la shell Bash.
- La variabile input_file è impostata sul nome del file di input contenente righe duplicate (cambialo con il nome effettivo del file di input).
- La variabile output_file è impostata sul nome del file di output in cui verranno rimossi i duplicati (cambialo con il nome del file di output desiderato).
- Lo script utilizza il comando sort per ordinare le righe nel file di input. L'ordinamento delle righe garantisce che le righe duplicate vengano raggruppate insieme.
- Le righe ordinate vengono quindi passate attraverso il comando uniq, che rimuove le righe duplicate consecutive. L'output di questo processo viene reindirizzato al file di output.
- Dopo che i duplicati sono stati rimossi, lo script stampa un messaggio di successo.

rimozione della riga duplicata
Qui usiamo ` gatto ` per visualizzare il testo all'interno del file di testo.
20) Scrivere uno script che generi una password casuale sicura.
Ecco il nostro script per generare una password casuale sicura.
#!/bin/bash
# Funzione per generare una password casuale
genera password() {
tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
}
# Chiama la funzione e memorizza la password generata
password=$(genera_password)
echo Password generata: $password
Nota: l'utente può modificare di conseguenza la lunghezza della password, sostituendo il numero '12'.
Spiegazione:
- Lo script inizia con uno shebang (#!/bin/bash), che indica che dovrebbe essere interpretato utilizzando la shell Bash.
- La funzione generate_password è definita per generare una password casuale. Ecco come funziona:
- tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
- fold -w 12 suddivide i dati casuali filtrati in righe di larghezza 12 caratteri ciascuna.
- head -n 1 seleziona la prima riga, dandoci effettivamente una sequenza casuale di caratteri di lunghezza 12.
- Alla variabile password viene assegnato il risultato della chiamata alla funzione generate_password.
- Infine, la password generata viene visualizzata utilizzando echo.
21) Scrivere uno script di shell che calcoli la dimensione totale di tutti i file in una directory.
Ecco uno script di shell per calcolare la dimensione totale di tutti i file in una directory.
#!/bin/bash
directory=/percorso/della/tua/directory
dimensione_totale=$(du -csh $directory | grep totale | awk ‘{print }’)
echo Dimensione totale dei file nella $directory: $total_size
Spiegazione:
- Lo script inizia con il comando #!/bin/bash, che indica che dovrebbe essere interpretato utilizzando la shell Bash.
- La variabile directory è impostata sul percorso della directory per la quale si desidera calcolare la dimensione totale del file. Sostituisci /percorso/della/tua/directory con il percorso effettivo.
- Il comando du viene utilizzato per stimare l'utilizzo dello spazio file. Le opzioni utilizzate sono:
- -c: produce un totale complessivo.
- -s: visualizza solo la dimensione totale della directory specificata.
- -h: stampa le dimensioni in un formato leggibile dall'uomo (ad esempio, KB, MB, GB).
- L'output di du viene reindirizzato a grep total per filtrare la riga che contiene la dimensione totale.
- awk '{print }' viene utilizzato per estrarre il primo campo (dimensione totale) dalla riga.
- La dimensione totale calcolata viene archiviata nella variabile total_size.
- Infine, lo script visualizza la dimensione totale utilizzando echo.

Dimensione totale dei file
Qui abbiamo usato ` pwd `comando per vedere il percorso della directory corrente.
22) Spiegare la differenza tra le istruzioni if ed elif nello scripting di shell.
Caratteristica | 'se' Staiftement | Dichiarazione 'elif'. |
---|---|---|
Scopo | Spiegare la differenza tra le istruzioni if ed elif nello scripting di shell. | Fornisce condizioni alternative per verificare quando la condizione if iniziale è falsa. |
utilizzo | Utilizzato per la condizione iniziale. | Utilizzato dopo la condizione if iniziale per verificare condizioni aggiuntive. |
numero di blocchi | Può averne solo uno se bloccato. | Può avere più blocchi elif, ma solo un altro blocco (opzionale). |
Esecuzione | Esegue il blocco di codice associato all'istruzione if se la condizione è vera. Se la condizione è falsa, viene eseguito il blocco else (se presente) (opzionale). | Controlla ciascuna condizione elif in ordine. Se una condizione elif è vera, viene eseguito il blocco di codice corrispondente e lo script esce dall'intero blocco condizionale. Se nessuna delle condizioni elif è vera, viene eseguito il blocco else (se presente). |
Strutture nidificate | Può essere nidificato all'interno di altri blocchi if, elif o else. | Non può essere annidato all'interno di un altro blocco elif, ma può essere utilizzato all'interno di un blocco if or else. |
Cerchiamo di capirlo con un esempio.
#!/bin/bash
numero=5
if [$numero -gt 10]; Poi
echo $numero è maggiore di 10
altro
echo $numero non è maggiore di 10
Essere
eco ---
if [$numero -gt 10]; Poi
echo $numero è maggiore di 10
elif [$numero -eq 10]; Poi
echo $numero è uguale a 10
altro
echo $numero è inferiore a 10
Essere
Spiegazione:
In questo esempio, il primo blocco if controlla se numero è maggiore di 10. In caso contrario, stampa un messaggio che indica che il numero non è maggiore di 10. Il secondo blocco con istruzioni elif controlla più condizioni in sequenza finché una di esse è vera. In questo caso, poiché il valore di number è 5, l'output sarà:

if_elif differenza
23) Come si usa un ciclo while per eseguire ripetutamente comandi?
Un ciclo while viene utilizzato negli script di shell per eseguire ripetutamente una serie di comandi finché una condizione specificata è vera. Il ciclo continua a eseguire i comandi finché la condizione non diventa falsa.
Ecco la sintassi di base di un ciclo while:
mentre [condizione]; Fare
# Comandi da eseguire
Fatto
Spiegazione:
- Il ciclo ` while` inizia con la parola chiave ` while` seguita da una condizione racchiusa tra parentesi quadre `[ ]`.
- Il corpo del ciclo, che contiene i comandi da eseguire, è racchiuso tra le parole chiave `do` e `done`.
- Il ciclo controlla innanzitutto la condizione. Se la condizione è vera, vengono eseguiti i comandi all'interno del corpo del ciclo. Dopo l'esecuzione del corpo del ciclo, la condizione viene verificata nuovamente e il processo si ripete finché la condizione non diventa falsa.
Esempio: Se vogliamo stampare i numeri da 1 a 5
#!/bin/bash
contatore=1
while [ $contatore -le 5 ]; Fare
echo Numero: $contatore
contatore=$((contatore + 1))
Fatto
Spiegazione:
- La variabile del contatore è impostata su 1.
- Il ciclo while controlla se il valore del contatore è inferiore o uguale a 5. Finché questa condizione è vera, il ciclo continua l'esecuzione.
- All'interno del ciclo, il valore corrente del contatore viene stampato utilizzando echo.
- Il contatore viene incrementato di 1 utilizzando l'espressione $((contatore + 1)).

ciclo while
24) Creare uno script di shell che trovi ed elenchi tutti i file vuoti in una directory.
Script di shell che puoi utilizzare per trovare ed elencare tutti i file vuoti in una directory utilizzando i comandi 'find' e 'stat':
#!/bin/bash
directory=″
if [ -z $directory ]; Poi
eco Utilizzo: $ 0
uscita 1
EssereSe [ ! -d $directory]; Poi
echo Errore: '$directory' non è una directory valida.
uscita 1
Essere
echo File vuoti nella directory $:
trova $directory -tipo f -empty
Spiegazione:
- ` #!/bin/bash `: Questo si chiama shebang e dice al sistema operativo di utilizzare la shell Bash per interpretare ed eseguire lo script.
- ` directory=″ `: questa riga assegna il primo argomento della riga di comando (indicato con ) alla variabile ` directory `.
- ` if [ -z $directory ]; Poi `: questa riga inizia un'istruzione if che controlla se il ` directory ` la variabile è vuota (-z verifica una stringa vuota).
- ` eco Utilizzo: $ 0 `: Se la directory è vuota, questa riga stampa un messaggio di utilizzo, dove ` $ 0 ` rappresenta il nome dello script.
- ` uscita 1 `: questa riga esce dallo script con il codice di uscita ` 1 ', indicando un errore.
- ` Essere `: questa riga segna la fine del ` Se 'dichiarazione.
- ` Se [ ! -d $directory]; Poi `: avvia un'altra istruzione if per verificare se la directory fornita esiste (` -D ` verifica una directory).
- ` echo Errore: '$directory' non è una directory valida. `: Se la directory fornita non esiste, questa riga stampa un messaggio di errore.
- ` uscita 1 `: esce dallo script con il codice di uscita ` 1 `.
- ` Essere `: Segna la fine del secondo ` se` dichiarazione.
- ` echo File vuoti nella directory $: `: Se finora tutto è valido, questa riga stampa un messaggio che indica che lo script elencherà i file vuoti nella directory specificata.
- ` trova $directory -tipo f -empty `: questa riga utilizza il ` Trovare ` comando per cercare file vuoti (` -vuoto `) di tipo file regolari (` -tipo f `) nella directory specificata. Quindi elenca questi file vuoti.

Trovare file vuoti
Nota : Dobbiamo fornire una directory come argomento durante l'esecuzione dello script. Qui abbiamo utilizzato il percorso della directory corrente home/jayeshkumar/
25) Qual è lo scopo del comando read nello scripting di shell?
Il comando read nello scripting della shell consente allo script di chiederti informazioni. È come quando un computer ti fa una domanda e aspetta la tua risposta. Ciò è utile per gli script che richiedono la digitazione di qualcosa o quando lo script deve lavorare con le informazioni dei file. Il comando read aiuta lo script a fermarsi e ad attendere ciò che digiti, quindi può utilizzare tali informazioni per fare più cose nello script.
Sintassi del comando di lettura:
read variable_name>
Esempio : Se vogliamo prendere il nome come input dall'utente per stamparlo.
#!/bin/bash
echo Inserisci il tuo nome:
leggere il nome
echo Ciao, $nome!

leggi nome
In sintesi, il comando read viene utilizzato per acquisire input o dati dell'utente da file all'interno degli script di shell, rendendo gli script più interattivi e versatili.
26) Scrivere uno script di shell che converta tutti i nomi di file in una directory in minuscolo.
Ecco uno script di shell che converte tutti i nomi di file in una directory in minuscolo.
#!/bin/bash
directory=″
if [ -z $directory ]; Poi
eco Utilizzo: $ 0
uscita 1
EssereJava principaleSe [ ! -d $directory]; Poi
echo Errore: '$directory' non è una directory valida.
uscita 1
Esserecd $directory || uscita 1
per file in *; Fare
if [ -f $file ]; Poi
nuovonome=$(echo $file | tr 'A-Z' 'a-z')
[ $file != $nuovonome ] && mv $file $nuovonome
Essere
Fatto
Spiegazione:
- #!/bin/bash : Questo è lo shebang, specificando che lo script deve essere interpretato utilizzando la shell Bash.
- directory=″ : Questa riga assegna il primo argomento della riga di comando alla directory delle variabili.
- if [ -z $directory ]; Poi : Questa riga controlla se la variabile di directory è vuota (nessun argomento fornito durante l'esecuzione dello script).
- eco Utilizzo: $ 0 : Se la directory è vuota, questa riga stampa un messaggio di utilizzo con il nome dello script (
).Per tutte le distribuzioni Linux, lo script della shell è come una bacchetta magica che automatizza il processo, fa risparmiare tempo agli utenti e aumenta la produttività. Questo tutorial sullo scripting ti introdurrà agli oltre 25 esempi di scripting.
Ma prima di passare all'argomento scripting della shell esempi, comprendiamo lo script di shell e i casi d'uso effettivi dello scripting di shell.
Cos'è lo script Shell?
Bene, la shell è a CLI ( interprete della riga di comando ), che viene eseguito in una finestra di testo in cui gli utenti possono gestire ed eseguire comandi della shell. D'altra parte, il processo di scrittura di una serie di comandi da eseguire su un sistema Linux. Un file che include tali istruzioni è chiamato script bash.
Usi degli script di shell
Di seguito sono riportati alcuni usi comuni di Shell Script:
- Automazione delle attività – Può essere utilizzato per automatizzare attività ripetitive come backup regolari e attività di installazione del software.
- Personalizzazione – È possibile utilizzare gli script di shell per progettare il proprio ambiente della riga di comando ed eseguire facilmente le proprie attività secondo le esigenze.
- Gestione dei file - Gli script di shell possono essere utilizzati anche per gestire e manipolare file e directory, ad esempio spostando, copiando, rinominando o eliminando file.
Esempi di script di shell in Linux
1) Cosa indica lo shebang (#!) all'inizio di uno script di shell?
IL cavolo (#!) all'inizio di uno script indica l'interprete che deve essere utilizzato per eseguire lo script. Indica al sistema quale shell o interprete deve interpretare i comandi dello script.
Per esempio: Supponiamo di avere uno script denominato myscript.sh scritto nella shell Bash:
shebang
In questo esempio:
- Il #!/bin/bash all'inizio dello script indica che lo script deve essere interpretato utilizzando la shell Bash.
- I comandi echo vengono utilizzati per stampare messaggi sul terminale.
2) Come si esegue uno script di shell dalla riga di comando?
Per eseguire uno script di shell dalla riga di comando, dobbiamo seguire questi passaggi:
- Assicurati che il file di script disponga delle autorizzazioni eseguibili utilizzando il file comando chmod :
chmod +x myscript.sh>
- Esegui lo script utilizzando il suo nome file:
./myscript.sh>
Qui devi sostituire myscript.sh con il nome del tuo script.
3) Scrivere uno script di shell che stampi techcodeview.com sul terminale.
Crea un nome script `myscript.sh` (stiamo usando ` Perché ` editor, puoi scegliere qualsiasi editor)
vim myscript.sh>
#!/bin/bash
# Questo script stampa techcodeview.com sul terminale
eco techcodeview.comstampare il nome
Rendiamo eseguibile il nostro script utilizzando `chmod +x`, quindi eseguiamo con `./myscipt.sh` e otteniamo l'output desiderato techcodeview.com.
4) Spiegare lo scopo del comando echo nello scripting della shell.
IL comando eco viene utilizzato per visualizzare testo o variabili sul terminale. È comunemente usato per stampare messaggi, valori variabili e generare output di programma.
comando eco
In questo esempio abbiamo eseguito 'echo' direttamente sul terminale, poiché funziona allo stesso modo all'interno dello script di shell.
5) Come puoi assegnare un valore a una variabile in uno script di shell?
Alle variabili vengono assegnati valori utilizzando l'operatore di assegnazione =.
Per esempio:
#!/bin/bash
# Assegnare un valore a una variabile
nome=Jayesh
età=21
echo $nome $etàSpiegazione:
- Alla variabile nome viene assegnato il valore Jayesh.
- Alla variabile età viene assegnato il valore 21.
- echo viene utilizzato per stampare e `$name` `$age` viene utilizzato per chiamare il valore memorizzato nelle variabili.
6) Scrivi uno script di shell che prenda il nome di un utente come input e lo saluti.
Crea un nome script 'example.sh'.
#!/bin/bash
# Chiedi all'utente il suo nome
echo Come ti chiami?
leggere il nome
# Saluta l'utente
echo Ciao, $nome! Piacere di conoscerti.Spiegazione:
- #!/bin/bash: questa è la riga shebang. Indica al sistema di utilizzare l'interprete Bash per eseguire lo script.
- # Chiedi all'utente il suo nome: questo è un commento. Fornisce il contesto sul codice imminente. I commenti vengono ignorati dall'interprete.
- echo Come ti chiami?: il comando echo viene utilizzato per visualizzare il testo tra virgolette doppie sul terminale.
- read name: il comando read attende che l'utente inserisca del testo e lo memorizzi nel nome della variabile.
- echo Ciao, $nome! Piacere di conoscerti.: questa riga utilizza il comando echo per stampare un messaggio di saluto che include il valore della variabile name, che è stata raccolta dall'input dell'utente.
7) Come si aggiungono commenti a uno script di shell?
Commenti nello scripting di shell vengono utilizzati per fornire spiegazioni o contesto al codice. Vengono ignorati dall'interprete e sono destinati solo agli esseri umani che leggono la sceneggiatura. Puoi aggiungere commenti utilizzando il simbolo #.
#!/bin/bash
# Questo è un commento che spiega lo scopo dello script
eco gfg8) Creare uno script di shell che controlli se esiste un file nella directory corrente.
Ecco uno script che controlla se esiste un file denominato example.txt nella directory corrente:
#!/bin/bash
file=esempio.txt
# Controlla se il file esiste
if [ -e $file ]; Poi
echo Il file esiste: $file
altro
echo File non trovato: $file
EssereSpiegazione:
- #!/bin/bash: questa è la riga shebang che specifica l'interprete (/bin/bash) da utilizzare per eseguire lo script.
- file=example.txt: questa riga definisce la variabile file e gli assegna il valore example.txt. Puoi sostituirlo con il nome del file che desideri verificare.
- if [ -e $file ]; then: questa riga inizia un'istruzione if. La condizione [ -e $file ] controlla se il file specificato dal valore della variabile file esiste. Il flag -e viene utilizzato per verificare l'esistenza del file.
- echo Il file esiste: $file: Se la condizione è vera (cioè il file esiste), questa riga stampa un messaggio che indica che il file esiste, insieme al nome del file.
- else: se la condizione è falsa (ovvero, il file non esiste), lo script esegue il codice nel ramo else.
- echo File non trovato: $file: questa riga stampa un messaggio di errore che indica che il file specificato non è stato trovato, insieme al nome del file.
- fi: questa riga segna la fine dell'istruzione if.
Trovare il file
9) Qual è la differenza tra virgolette singole (') e virgolette doppie () nello scripting di shell?
Le virgolette singole (') e le virgolette doppie () vengono utilizzate per racchiudere stringhe negli script di shell, ma hanno comportamenti diversi:
- Virgolette singole: tutto ciò che è racchiuso tra virgolette singole viene trattato come una stringa letterale. I nomi delle variabili e la maggior parte dei caratteri speciali non vengono espansi.
- Virgolette doppie: le variabili e alcuni caratteri speciali racchiusi tra virgolette doppie vengono espansi. I contenuti sono soggetti a sostituzione di variabile e sostituzione di comando.
#!/bin/bash
abcd=Ciao
echo ‘$abcd’ # Risultato: $abcd
echo $abcd # Risultato: Ciao10) Come è possibile utilizzare gli argomenti della riga di comando in uno script di shell?
Argomenti della riga di comando sono valori forniti a uno script quando viene eseguito. È possibile accedervi all'interno dello script utilizzando variabili speciali come $1, $2, ecc., dove $1 rappresenta il primo argomento, $2 rappresenta il secondo argomento e così via.
Per esempio: Se il nome del nostro script è `example.sh`
#!/bin/bash
echo Nome dello script: $0
echo Primo argomento: $1
echo Secondo argomento: $2Se eseguiamo lo script con `.example.sh ciao_1 ciao_2`, verrà restituito:
argomenti cli
11) Come si usa il ciclo for per scorrere un elenco di valori?
Crea un nome script 'example.sh'.
#!/bin/bash
frutta=(mela banana ciliegia dattero)
per frutta in ${frutta[@]}; Fare
echo Frutto corrente: $frutto
FattoSpiegazione:
La riga `fruits=` crea un array denominato Fruits con quattro elementi: mela, banana, ciliegia e data.
- per frutta in ${frutta[@]}; do: questa riga avvia un ciclo for. Ecco cosa significa ciascuna parte:
- for fruit: dichiara una variabile di ciclo chiamata fruit. In ogni iterazione del ciclo, frutta manterrà il valore dell'elemento corrente dall'array frutti.
- ${frutti[@]}: questa è un'espansione dell'array che prende tutti gli elementi dall'array frutti. La sintassi ${…} garantisce che ogni elemento venga trattato come un elemento separato.
- do: questa parola chiave segna l'inizio del corpo del ciclo.
- echo Frutto corrente: $frutto: all'interno del ciclo, questa riga utilizza il comando echo per visualizzare il valore corrente della variabile del ciclo frutto. Stampa un messaggio come Frutto corrente: mela per ogni frutto nell'array.
- done: questa parola chiave segna la fine del corpo del ciclo. Indica allo script che il ciclo è terminato.
per ciclo
12) Scrivere uno script di shell che calcoli la somma degli interi da 1 a N utilizzando un ciclo.
Crea un nome script 'example.sh'.
#!/bin/bash
echo Inserisci un numero (N):
leggi n
somma=0
for (( i=1; i<=$N; i++ )); Fare
somma=$((somma + i))
Fatto
echo La somma dei numeri interi da 1 a $N è: $sumSpiegazione:
Lo script inizia chiedendoti di inserire un numero (N) usando read. Questo numero determinerà quante volte verrà eseguito il ciclo.- La variabile somma è inizializzata su 0. Questa variabile manterrà traccia della somma dei numeri interi.
- Il ciclo for inizia con for (( i=1; i<=$N; i++ )). Questa struttura ad anello viene utilizzata per ripetere una serie di azioni un certo numero di volte, in questo caso da 1 al valore di N.
- All'interno del ciclo accadono queste cose:
- i=1 imposta la variabile del ciclo i su 1 all'inizio di ogni iterazione.
- La condizione del ciclo i<=$N controlla se i è ancora inferiore o uguale al numero N specificato.
- Se la condizione è vera, il corpo del ciclo viene eseguito.
- sum=$((sum + i)) calcola il nuovo valore di sum aggiungendovi il valore corrente di i. Questo somma i numeri interi da 1 al valore i corrente.
- Dopo ogni iterazione, i++ incrementa il valore di i di 1.
- Il ciclo continua a funzionare finché la condizione i<=$N diventa falsa (quando i diventa maggiore di N).
- Una volta terminato il ciclo, lo script visualizza la somma dei numeri interi da 1 al numero N inserito.
13) Crea uno script che cerchi una parola specifica in un file e ne conti le occorrenze.
Crea un nome script 'word_count.sh'.
#!/bin/bash
echo Inserisci la parola da cercare:
leggi parola_destinazione
echo Inserisci il nome del file:
leggi il nome del file
conteggio=$(grep -o -w $parola_destinazione $nomefile | wc -l)
echo La parola '$target_word' appare $count volte in '$nomefile'.Spiegazione:
- echo Inserisci la parola da cercare:: Questa riga visualizza un messaggio che chiede all'utente di inserire una parola che desidera cercare in un file.
- read target_word: questa riga legge l'input fornito dall'utente e lo memorizza in una variabile denominata target_word.
- echo Inserisci il nome del file:: Questa riga visualizza un messaggio che chiede all'utente di inserire il nome del file in cui desidera cercare.
- read filename: questa riga legge l'input fornito dall'utente e lo memorizza in una variabile denominata filename.
- count=$(grep -o -w $target_word $filename | wc -l): questa riga svolge il lavoro principale dello script. Analizziamolo ulteriormente:
- grep -o -w $parola_destinazione $nomefile: questa parte del comando cerca le occorrenze della parola_destinazione nel nome file specificato. Le opzioni -o e -w assicurano che vengano conteggiate solo le corrispondenze di parole intere.
- |: Questa è una pipe che prende l'output del comando precedente e lo invia come input al comando successivo.
- wc -l: questa parte del comando utilizza il comando wc per contare il numero di righe nell'input. L'opzione -l conta specificamente le righe.
- L'intero comando calcola il conteggio delle occorrenze di target_word nel file e assegna tale conteggio alla variabile coun
14) Spiegare le differenze tra output standard (stdout) ed errore standard (stderr).
La differenza principale tra output standard (stdout) ed errore standard (stderr) è la seguente:
- Uscita standard (stdout): Questo è il flusso di output predefinito in cui va l'output regolare di un comando. Viene visualizzato sul terminale per impostazione predefinita. Puoi reindirizzarlo a un file utilizzando>.
- Errore standard (stderr): Questo è il flusso di output per i messaggi di errore e gli avvisi. Viene visualizzato anche sul terminale per impostazione predefinita. Puoi reindirizzarlo a un file usando 2>.
15) Spiegare il concetto di istruzioni condizionali nello scripting di shell.
Istruzioni condizionali negli script di shell permetterci di prendere decisioni e controllare il flusso del nostro script in base a determinate condizioni. Consentono al nostro script di eseguire diversi set di comandi a seconda che una particolare condizione sia vera o falsa. Le istruzioni condizionali primarie negli script di shell sono l'istruzione if, l'istruzione elif (facoltativa) e l'istruzione else (facoltativa).
Ecco la struttura di base di un'istruzione condizionale nello scripting di shell:
se [condizione]; Poi
# Comandi da eseguire se la condizione è vera
elif [un'altra_condizione]; Poi
# Comandi da eseguire se un'altra_condizione è vera (opzionale)
altro
# Comandi da eseguire se nessuna delle condizioni è vera (opzionale)
EssereSpiegazione:
- [ condizione ] = Comando che valuta la condizione e restituisce uno stato di uscita vero (0) o falso (diverso da zero).
- then = È una parola chiave che indica che i comandi successivi verranno eseguiti se la condizione risulta vera.
- elif = (abbreviazione di else if) È una sezione che ci permette di specificare condizioni aggiuntive da verificare.
- else = è una sezione che contiene comandi che verranno eseguiti se nessuna delle condizioni è vera.
- fi = È una parola chiave che segna la fine del blocco condizionale.
16) Come si leggono le righe da un file all'interno di uno script di shell?
A leggere le righe da un file all'interno di uno script di shell, possiamo usare vari metodi, ma un approccio comune è usare un ciclo while in combinazione con il comando read. Ecco come possiamo farlo:
#!/bin/bash
file=/home/jayeshkumar/jayesh.txt
# Controlla se il file esiste
if [ -e $file ]; Poi
mentre IFS= leggi -r riga; Fare
echo Riga letta: $riga
# Aggiungi qui la tua logica di elaborazione
fatto <$file
altro
echo File non trovato: $file
EssereSpiegazione:
- #!/bin/bash: questa è la riga shebang che specifica l'interprete (/bin/bash) da utilizzare per eseguire lo script.
- file=/home/jayeshkumar/jayesh.txt: questa riga definisce la variabile file e assegna il percorso completo al file jayesh.txt nella directory /home/jayeshkumar. Modifica questo percorso in modo che corrisponda al percorso effettivo del file che desideri leggere.
- if [ -e $file ]; then: questa riga inizia un'istruzione if. Controlla se il file specificato dalla variabile $file esiste. Il flag -e controlla l'esistenza del file.
- mentre IFS= leggi -r riga; do: questa riga avvia un ciclo while che legge le righe dal file.
- IFS=: IFS (Separatore di campo interno) è impostato su un valore vuoto per preservare gli spazi iniziali e finali.
- read -r line: legge la riga corrente dal file e la memorizza nella variabile line.
- echo Line read: $line: questa riga stampa il contenuto della riga letta dal file. La variabile $line contiene il contenuto della riga corrente.
- # Aggiungi qui la tua logica di elaborazione: questo è un commento segnaposto in cui puoi aggiungere la tua logica per elaborare ogni riga. Ad esempio, potresti analizzare la riga, estrarre informazioni o eseguire azioni specifiche in base al contenuto.
- done <$file: segna la fine del ciclo while. Il < $file reindirizza il contenuto del file affinché venga letto dal ciclo.
- else: se il file non esiste (la condizione nell'istruzione if è falsa), lo script esegue il codice nel ramo else.
- echo File non trovato: $file: questa riga stampa un messaggio di errore indicando che il file specificato non è stato trovato.
- fi: questa riga segna la fine dell'istruzione if.
file di lettura
Qui abbiamo usato ` pwd ` comando per ottenere il percorso della directory corrente.
17) Scrivere una funzione in uno script di shell che calcoli il fattoriale di un dato numero.
Ecco la sceneggiatura checalcolare il fattorialedi un dato numero.
#!/bin/bash
# Definisce una funzione per calcolare il fattoriale
calcola_fattoriale() {
numero=$1
fatto=1
for ((i=1; i<=num; i++)); Fare
fatto=$((fatto * i))
Fatto
eco $fatto
}
# Richiede all'utente di inserire un numero
eco Inserisci un numero:
leggi input_num
# Chiama la funzione calcola_fattoriale con il numero immesso
risultato_fattoriale=$(calcola_fattoriale $num_input)
# Visualizza il risultato fattoriale
echo Fattoriale di $input_num è: $fattoriale_risultatoSpiegazione:
- Lo script inizia con la riga #!/bin/bash per specificare l'interprete.
- calcola_fattoriale() è definita come una funzione. Richiede un argomento, num, che è il numero per il quale deve essere calcolato il fattoriale.
- All'interno della funzione, il fatto è inizializzato su 1. Questa variabile memorizzerà il risultato fattoriale.
- Il ciclo for ripete da 1 al numero specificato (num). In ogni iterazione, moltiplica il valore corrente di fact per l'indice del ciclo i.
- Una volta completato il ciclo, la variabile fact contiene il fattoriale calcolato.
- Lo script richiede all'utente di inserire un numero utilizzando read.
- La funzione calcola_fattoriale viene chiamata con il numero fornito dall'utente e il risultato viene archiviato nella variabile fattoriale_result.
- Infine, lo script visualizza il risultato fattoriale calcolato.
Fattoriale
18) Come gestisci segnali come Ctrl+C in uno script di shell?
In uno script di shell, puoi gestire segnali come Ctrl+C (noto anche come SIGINT) utilizzando il comando trap. Ctrl+C genera un segnale SIGINT quando l'utente lo preme per interrompere lo script o il programma in esecuzione. Utilizzando il comando trap è possibile specificare le azioni da intraprendere quando viene ricevuto un particolare segnale. Ecco come gestisci segnali come Ctrl+C in uno script di shell:
#!/bin/bash
ripulire() {
echo Script interrotto. Esecuzione della pulizia…
# Aggiungi qui le tue azioni di pulizia
uscita 1
}
# Imposta una trappola per chiamare la funzione di pulizia quando viene ricevuto Ctrl+C (SIGINT).
pulizia trap SIGINT
# Resto del tuo script
eco Correndo...
dormire 10
eco Finito.La gestione dei segnali è importante per rendere gli script robusti e garantire che gestiscano correttamente le interruzioni impreviste. Puoi personalizzare la funzione di pulizia in base alle tue esigenze specifiche, come chiudere file, arrestare processi o registrare informazioni prima della chiusura dello script.
Spiegazione:
- #!/bin/bash: questa riga Shebang specifica l'interprete da utilizzare per eseguire lo script.
- cleanup() { … }: definisce una funzione denominata cleanup. All'interno di questa funzione è possibile includere qualsiasi azione da eseguire quando lo script viene interrotto, come la chiusura di file, il rilascio di risorse o l'esecuzione di altre attività di pulizia.
- trap cleanup SIGINT: il comando trap viene utilizzato per impostare un gestore di segnale. In questo caso specifica che quando viene ricevuto il segnale SIGINT (Ctrl+C), deve essere eseguita la funzione di pulizia.
- echo Running…, sleep 10, echo Finished.: Questi sono solo comandi di esempio per simulare l'esecuzione di uno script.
19) Crea uno script che controlli e rimuova le righe duplicate in un file di testo.
Ecco il nostro script Linux in cui rimuoveremo le righe duplicate da un file di testo.
#!/bin/bash
file_input=input.txt
file_output=output.txt
ordina $file_input | uniq> $file_output
echo Righe duplicate rimosse con successo.Spiegazione:
- Lo script inizia con uno shebang (#!/bin/bash), che indica che lo script deve essere interpretato utilizzando la shell Bash.
- La variabile input_file è impostata sul nome del file di input contenente righe duplicate (cambialo con il nome effettivo del file di input).
- La variabile output_file è impostata sul nome del file di output in cui verranno rimossi i duplicati (cambialo con il nome del file di output desiderato).
- Lo script utilizza il comando sort per ordinare le righe nel file di input. L'ordinamento delle righe garantisce che le righe duplicate vengano raggruppate insieme.
- Le righe ordinate vengono quindi passate attraverso il comando uniq, che rimuove le righe duplicate consecutive. L'output di questo processo viene reindirizzato al file di output.
- Dopo che i duplicati sono stati rimossi, lo script stampa un messaggio di successo.
rimozione della riga duplicata
Qui usiamo ` gatto ` per visualizzare il testo all'interno del file di testo.
20) Scrivere uno script che generi una password casuale sicura.
Ecco il nostro script per generare una password casuale sicura.
#!/bin/bash
# Funzione per generare una password casuale
genera password() {
tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
}
# Chiama la funzione e memorizza la password generata
password=$(genera_password)
echo Password generata: $passwordNota: l'utente può modificare di conseguenza la lunghezza della password, sostituendo il numero '12'.
Spiegazione:
- Lo script inizia con uno shebang (#!/bin/bash), che indica che dovrebbe essere interpretato utilizzando la shell Bash.
- La funzione generate_password è definita per generare una password casuale. Ecco come funziona:
- tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
- fold -w 12 suddivide i dati casuali filtrati in righe di larghezza 12 caratteri ciascuna.
- head -n 1 seleziona la prima riga, dandoci effettivamente una sequenza casuale di caratteri di lunghezza 12.
- Alla variabile password viene assegnato il risultato della chiamata alla funzione generate_password.
- Infine, la password generata viene visualizzata utilizzando echo.
21) Scrivere uno script di shell che calcoli la dimensione totale di tutti i file in una directory.
Ecco uno script di shell per calcolare la dimensione totale di tutti i file in una directory.
#!/bin/bash
directory=/percorso/della/tua/directory
dimensione_totale=$(du -csh $directory | grep totale | awk ‘{print $1}’)
echo Dimensione totale dei file nella $directory: $total_sizeSpiegazione:
- Lo script inizia con il comando #!/bin/bash, che indica che dovrebbe essere interpretato utilizzando la shell Bash.
- La variabile directory è impostata sul percorso della directory per la quale si desidera calcolare la dimensione totale del file. Sostituisci /percorso/della/tua/directory con il percorso effettivo.
- Il comando du viene utilizzato per stimare l'utilizzo dello spazio file. Le opzioni utilizzate sono:
- -c: produce un totale complessivo.
- -s: visualizza solo la dimensione totale della directory specificata.
- -h: stampa le dimensioni in un formato leggibile dall'uomo (ad esempio, KB, MB, GB).
- L'output di du viene reindirizzato a grep total per filtrare la riga che contiene la dimensione totale.
- awk '{print $1}' viene utilizzato per estrarre il primo campo (dimensione totale) dalla riga.
- La dimensione totale calcolata viene archiviata nella variabile total_size.
- Infine, lo script visualizza la dimensione totale utilizzando echo.
Dimensione totale dei file
Qui abbiamo usato ` pwd `comando per vedere il percorso della directory corrente.
22) Spiegare la differenza tra le istruzioni if ed elif nello scripting di shell.
Caratteristica 'se' Staiftement Dichiarazione 'elif'. Scopo Spiegare la differenza tra le istruzioni if ed elif nello scripting di shell. Fornisce condizioni alternative per verificare quando la condizione if iniziale è falsa. utilizzo Utilizzato per la condizione iniziale. Utilizzato dopo la condizione if iniziale per verificare condizioni aggiuntive. numero di blocchi Può averne solo uno se bloccato. Può avere più blocchi elif, ma solo un altro blocco (opzionale). Esecuzione Esegue il blocco di codice associato all'istruzione if se la condizione è vera. Se la condizione è falsa, viene eseguito il blocco else (se presente) (opzionale). Controlla ciascuna condizione elif in ordine. Se una condizione elif è vera, viene eseguito il blocco di codice corrispondente e lo script esce dall'intero blocco condizionale. Se nessuna delle condizioni elif è vera, viene eseguito il blocco else (se presente). Strutture nidificate Può essere nidificato all'interno di altri blocchi if, elif o else. Non può essere annidato all'interno di un altro blocco elif, ma può essere utilizzato all'interno di un blocco if or else. Cerchiamo di capirlo con un esempio.
#!/bin/bash
numero=5
if [$numero -gt 10]; Poi
echo $numero è maggiore di 10
altro
echo $numero non è maggiore di 10
Essere
eco ---
if [$numero -gt 10]; Poi
echo $numero è maggiore di 10
elif [$numero -eq 10]; Poi
echo $numero è uguale a 10
altro
echo $numero è inferiore a 10
EssereSpiegazione:
In questo esempio, il primo blocco if controlla se numero è maggiore di 10. In caso contrario, stampa un messaggio che indica che il numero non è maggiore di 10. Il secondo blocco con istruzioni elif controlla più condizioni in sequenza finché una di esse è vera. In questo caso, poiché il valore di number è 5, l'output sarà:
if_elif differenza
23) Come si usa un ciclo while per eseguire ripetutamente comandi?
Un ciclo while viene utilizzato negli script di shell per eseguire ripetutamente una serie di comandi finché una condizione specificata è vera. Il ciclo continua a eseguire i comandi finché la condizione non diventa falsa.
Ecco la sintassi di base di un ciclo while:
mentre [condizione]; Fare
# Comandi da eseguire
FattoSpiegazione:
- Il ciclo ` while` inizia con la parola chiave ` while` seguita da una condizione racchiusa tra parentesi quadre `[ ]`.
- Il corpo del ciclo, che contiene i comandi da eseguire, è racchiuso tra le parole chiave `do` e `done`.
- Il ciclo controlla innanzitutto la condizione. Se la condizione è vera, vengono eseguiti i comandi all'interno del corpo del ciclo. Dopo l'esecuzione del corpo del ciclo, la condizione viene verificata nuovamente e il processo si ripete finché la condizione non diventa falsa.
Esempio: Se vogliamo stampare i numeri da 1 a 5
#!/bin/bash
contatore=1
while [ $contatore -le 5 ]; Fare
echo Numero: $contatore
contatore=$((contatore + 1))
FattoSpiegazione:
- La variabile del contatore è impostata su 1.
- Il ciclo while controlla se il valore del contatore è inferiore o uguale a 5. Finché questa condizione è vera, il ciclo continua l'esecuzione.
- All'interno del ciclo, il valore corrente del contatore viene stampato utilizzando echo.
- Il contatore viene incrementato di 1 utilizzando l'espressione $((contatore + 1)).
ciclo while
24) Creare uno script di shell che trovi ed elenchi tutti i file vuoti in una directory.
Script di shell che puoi utilizzare per trovare ed elencare tutti i file vuoti in una directory utilizzando i comandi 'find' e 'stat':
#!/bin/bash
directory=$1″
if [ -z $directory ]; Poi
eco Utilizzo: $ 0
uscita 1
EssereSe [ ! -d $directory]; Poi
echo Errore: '$directory' non è una directory valida.
uscita 1
Essere
echo File vuoti nella directory $:
trova $directory -tipo f -emptySpiegazione:
- ` #!/bin/bash `: Questo si chiama shebang e dice al sistema operativo di utilizzare la shell Bash per interpretare ed eseguire lo script.
- ` directory=$1″ `: questa riga assegna il primo argomento della riga di comando (indicato con $1) alla variabile ` directory `.
- ` if [ -z $directory ]; Poi `: questa riga inizia un'istruzione if che controlla se il ` directory ` la variabile è vuota (-z verifica una stringa vuota).
- ` eco Utilizzo: $ 0 `: Se la directory è vuota, questa riga stampa un messaggio di utilizzo, dove ` $ 0 ` rappresenta il nome dello script.
- ` uscita 1 `: questa riga esce dallo script con il codice di uscita ` 1 ', indicando un errore.
- ` Essere `: questa riga segna la fine del ` Se 'dichiarazione.
- ` Se [ ! -d $directory]; Poi `: avvia un'altra istruzione if per verificare se la directory fornita esiste (` -D ` verifica una directory).
- ` echo Errore: '$directory' non è una directory valida. `: Se la directory fornita non esiste, questa riga stampa un messaggio di errore.
- ` uscita 1 `: esce dallo script con il codice di uscita ` 1 `.
- ` Essere `: Segna la fine del secondo ` se` dichiarazione.
- ` echo File vuoti nella directory $: `: Se finora tutto è valido, questa riga stampa un messaggio che indica che lo script elencherà i file vuoti nella directory specificata.
- ` trova $directory -tipo f -empty `: questa riga utilizza il ` Trovare ` comando per cercare file vuoti (` -vuoto `) di tipo file regolari (` -tipo f `) nella directory specificata. Quindi elenca questi file vuoti.
Trovare file vuoti
Nota : Dobbiamo fornire una directory come argomento durante l'esecuzione dello script. Qui abbiamo utilizzato il percorso della directory corrente home/jayeshkumar/
25) Qual è lo scopo del comando read nello scripting di shell?
Il comando read nello scripting della shell consente allo script di chiederti informazioni. È come quando un computer ti fa una domanda e aspetta la tua risposta. Ciò è utile per gli script che richiedono la digitazione di qualcosa o quando lo script deve lavorare con le informazioni dei file. Il comando read aiuta lo script a fermarsi e ad attendere ciò che digiti, quindi può utilizzare tali informazioni per fare più cose nello script.
Sintassi del comando di lettura:
read variable_name>
Esempio : Se vogliamo prendere il nome come input dall'utente per stamparlo.
#!/bin/bash
echo Inserisci il tuo nome:
leggere il nome
echo Ciao, $nome!leggi nome
In sintesi, il comando read viene utilizzato per acquisire input o dati dell'utente da file all'interno degli script di shell, rendendo gli script più interattivi e versatili.
26) Scrivere uno script di shell che converta tutti i nomi di file in una directory in minuscolo.
Ecco uno script di shell che converte tutti i nomi di file in una directory in minuscolo.
#!/bin/bash
directory=$1″
if [ -z $directory ]; Poi
eco Utilizzo: $ 0
uscita 1
EssereSe [ ! -d $directory]; Poi
echo Errore: '$directory' non è una directory valida.
uscita 1
Esserecd $directory || uscita 1
per file in *; Fare
if [ -f $file ]; Poi
nuovonome=$(echo $file | tr 'A-Z' 'a-z')
[ $file != $nuovonome ] && mv $file $nuovonome
Essere
FattoSpiegazione:
- #!/bin/bash : Questo è lo shebang, specificando che lo script deve essere interpretato utilizzando la shell Bash.
- directory=$1″ : Questa riga assegna il primo argomento della riga di comando alla directory delle variabili.
- if [ -z $directory ]; Poi : Questa riga controlla se la variabile di directory è vuota (nessun argomento fornito durante l'esecuzione dello script).
- eco Utilizzo: $ 0 : Se la directory è vuota, questa riga stampa un messaggio di utilizzo con il nome dello script ($0).
- uscita 1 : Questa riga esce dallo script con un codice di uscita pari a 1, indicando che si è verificato un errore.
- F i: segna la fine della prima istruzione if.
- Se [ ! -d $directory]; Poi : Questa riga controlla se la directory specificata non esiste (-d verifica una directory).
- echo Errore: '$directory' non è una directory valida. : Se la directory specificata non esiste, questa riga stampa un messaggio di errore.
- uscita 1 : esce dallo script con il codice di uscita 1.
- Essere : segna la fine della seconda istruzione if.
- cd $directory || uscita 1 : modifica la directory di lavoro corrente nella directory specificata. Se il cambio di directory fallisce (ad esempio, directory inesistente), lo script termina con un codice di errore.
- per file in *; Fare: IO per file in *; Fare: avvia un ciclo che ripete tutti gli elementi nella directory corrente (* corrisponde a tutti i nomi di file).
- if [ -f $file ]; Poi : controlla se l'elemento dell'iterazione del ciclo corrente è un file normale (-f verifica un file normale).
- nuovonome=$(echo $file | tr 'A-Z' 'a-z') : Converte il nome file corrente ($file) in minuscolo utilizzando il comando tr e memorizza il risultato nella variabile newname.
- [ $file != $nuovonome ] && mv $file $nuovonome : confronta il nome file originale con il nuovo nome file minuscolo. Se sono diversi, rinomina il file utilizzando il comando mv.
- Essere : segna la fine dell'istruzione if interna.
- Fatto : Contrassegna la fine del ciclo.
Nota : Dobbiamo fornire una directory come argomento durante l'esecuzione dello script. Qui abbiamo utilizzato il percorso della directory corrente home/jayeshkumar/test
27) Come si possono usare le operazioni aritmetiche all'interno di uno script di shell?
Le operazioni aritmetiche possono essere eseguite all'interno di uno script di shell utilizzando vari metodi integrati. La shell fornisce meccanismi per semplici calcoli aritmetici utilizzando l'espansione aritmetica Come:
- Espansione aritmetica ($((…)))
- Utilizzando il comando expr
- Usando let Comando
Ecco il nostro script Shell che spiega tutti e tre i metodi per le operazioni aritmetiche.
#!/bin/bash
numero1=10
numero2=5#Espansione aritmetica ($((…)))
risultato=$((num1 + num2))
echo Somma: $risultato#Utilizzo del comando expr
somma=$(espr $num1 + $num2)
echo Somma: $somma#Utilizzando let Command
sia somma = num1 + num2
echo Somma: $sommaSpiegazione:
- `#!/bin/bash` : Questo è lo shebang, specificando che lo script deve essere interpretato utilizzando la shell Bash.
- 'num1=10'. e ` num2=5` : Queste righe assegnano i valori 10 e 5 alle variabili ` numero1 'e''. numero2 ', rispettivamente.
- `#Espansione aritmetica ($((…)))` : Questo è un commento che indica l'inizio della sezione che dimostra l'espansione aritmetica.
- `risultato=$((num1 + num2))` : Questa riga utilizza l'espansione aritmetica per calcolare la somma di ` numero1 'e''. numero2 ` e memorizza il risultato nel file ` risultato `variabile.
- 'echo Somma: $risultato'. : Questa riga stampa la somma calcolata utilizzando il valore memorizzato nel file ` risultato `variabile.
- '#Utilizzo del comando expr'. : Questo è un commento che indica l'inizio della sezione che dimostra l'uso del ` espr ` comando per operazioni aritmetiche.
- `somma=$(espr $num1 + $num2)` : Questa riga utilizza il ` espr ` comando per calcolare la somma di ` numero1 'e''. numero2 ` e memorizza il risultato nel file ` somma `variabile. Si noti che il ` espr Il comando ` richiede spazi attorno agli operatori.
- `echo Somma: $somma` : Questa riga stampa la somma calcolata utilizzando il valore memorizzato nel file ` somma `variabile.
- `#Utilizzando lascia Comando` : Questo è un commento che indica l'inizio della sezione che dimostra l'uso del ` permettere ` comando per operazioni aritmetiche.
- `somma = num1 + num2″` : Questa riga utilizza il ` permettere ` comando per calcolare la somma di ` numero1 'e''. numero2 ` e assegna il risultato a ` somma `variabile. Il ` permettere Il comando ` non richiede spazi attorno agli operatori.
- `echo Somma: $somma` : Questa riga stampa la somma calcolata utilizzando il valore memorizzato nel file ` somma `variabile.
aritmetica
28) Creare uno script che controlli se un host di rete è raggiungibile.
Ecco un semplice script di shell che utilizza il comando ping per verificare se un host di rete è raggiungibile:
#!/bin/bash
ospite=$1″
if [ -z $host ]; Poi
eco Utilizzo: $ 0
uscita 1
Essere
ping -c 4 $host
se [$? -eq0]; Poi
echo $host è raggiungibile.
altro
echo $host non è raggiungibile.
EssereSpiegazione:
- Prende un nome host o un indirizzo IP come argomento e controlla se l'argomento viene fornito.
- Se non viene fornito alcun argomento, visualizza un messaggio di utilizzo ed esce.
- Utilizza il comando ping con l'opzione -c 4 per inviare quattro richieste echo ICMP all'host specificato.
- Dopo l'esecuzione, il comando ping controlla lo stato di uscita ($?). Se lo stato di uscita è 0, significa che l'host è raggiungibile e lo script stampa un messaggio di successo. Altrimenti, stampa un messaggio di errore.
Nota : Dobbiamo fornire un nome host come argomento durante l'esecuzione dello script. Qui abbiamo utilizzato google.com
29) Scrivi uno script di shell per trovare l'elemento più grande in un array:
Ecco uno script di shell per trovare l'elemento più grande in un array.
#!/bin/bash
# Dichiara un array
matrice=(3 56 24 89 67)# Inizializza una variabile per memorizzare il valore massimo, iniziando dal primo elemento
massimo=${array[0]}
# Itera attraverso l'array
per numero in ${array[@]}; Fare
# Confronta ogni elemento con il massimo corrente
se ((num> max)); Poi
massimo=$num
Essere
Fatto# Stampa il valore massimo
echo L'elemento massimo nell'array è: $max
Spiegazione:
- ` #!/bin/bash `: La riga shebang specifica che lo script deve essere interpretato utilizzando la shell Bash.
- ` matrice=(3 56 24 89 67) `: L'array viene dichiarato e inizializzato con valori.
- ` massimo=${array[0]} `: `max` viene inizializzato con il primo elemento dell'array.
- ` per numero in ${array[@]}; Fare `: Un ciclo `for` viene utilizzato per scorrere gli elementi dell'array.
- ` se ((num> max)); Poi `: un'istruzione `if` controlla se l'elemento corrente `num` è maggiore del massimo corrente `max`.
- ` max=$num`: Se`num ` è maggiore di `max`, `max` viene aggiornato con il valore di num.
- ` Fatto `: Il ciclo `for` è chiuso.
- ` echo L'elemento massimo nell'array è: $max `: Infine, lo script stampa il valore massimo trovato nell'array.
numero maggiore
30) Scrivere uno script per calcolare la somma degli elementi in un array.
#!/bin/bash
# Dichiara un array
matrice=(1 65 22 19 94)
# Inizializza una variabile per memorizzare la somma
somma=0
# Scorrere l'array e aggiungere ogni elemento alla somma
per numero in ${array[@]}; Fare
am=$((am + am))
Fatto# Stampa la somma
echo La somma degli elementi nell'array è: $sum
Spiegazione:
` #!/bin/bash `: La riga shebang specifica che lo script deve essere interpretato utilizzando la shell Bash.
` matrice=(1 65 22 19 94) `: L'array viene dichiarato e inizializzato con valori.
` somma=0 `:` somma ` viene inizializzato a zero per contenere la somma degli elementi.
` per numero in ${array[@]}; Fare `: Un` per Il ciclo ` viene utilizzato per scorrere gli elementi dell'array.
` am=$((am + am)) `: All'interno del ciclo, ogni elemento ` nessuno ' viene aggiunto a ' somma `variabile.
` Fatto `: Il ` per `il ciclo è chiuso.
`echo La somma degli elementi nell'array è: $sum`: Infine, lo script stampa la somma di tutti gli elementi nell'array.
Somma degli elementi
Ulteriori informazioni sugli script di shell
- Differenza tra shell e kernel
- Differenza tra Shell vincolata e Shell inversa
- Introduzione alla shell Linux e allo scripting della shell
Conclusione
Tutti i geek sappiamo che lo script di shell è molto utile per aumentare la produttività del lavoro e anche per risparmiare tempo. Quindi, in questo articolo abbiamo trattato 30 esempi di script di shell molto utili e la maggior parte dei truffatori . Ci auguriamo che questa guida completa sull'esempio di scripting di shell ti aiuti a comprendere tutto sugli script di shell.
- uscita 1 : Questa riga esce dallo script con un codice di uscita pari a 1, indicando che si è verificato un errore.
- F i: segna la fine della prima istruzione if.
- Se [ ! -d $directory]; Poi : Questa riga controlla se la directory specificata non esiste (-d verifica una directory).
- echo Errore: '$directory' non è una directory valida. : Se la directory specificata non esiste, questa riga stampa un messaggio di errore.
- uscita 1 : esce dallo script con il codice di uscita 1.
- Essere : segna la fine della seconda istruzione if.
- cd $directory || uscita 1 : modifica la directory di lavoro corrente nella directory specificata. Se il cambio di directory fallisce (ad esempio, directory inesistente), lo script termina con un codice di errore.
- per file in *; Fare: IO per file in *; Fare: avvia un ciclo che ripete tutti gli elementi nella directory corrente (* corrisponde a tutti i nomi di file).
- if [ -f $file ]; Poi : controlla se l'elemento dell'iterazione del ciclo corrente è un file normale (-f verifica un file normale).
- nuovonome=$(echo $file | tr 'A-Z' 'a-z') : Converte il nome file corrente ($file) in minuscolo utilizzando il comando tr e memorizza il risultato nella variabile newname.
- [ $file != $nuovonome ] && mv $file $nuovonome : confronta il nome file originale con il nuovo nome file minuscolo. Se sono diversi, rinomina il file utilizzando il comando mv.
- Essere : segna la fine dell'istruzione if interna.
- Fatto : Contrassegna la fine del ciclo.
Nota : Dobbiamo fornire una directory come argomento durante l'esecuzione dello script. Qui abbiamo utilizzato il percorso della directory corrente home/jayeshkumar/test
27) Come si possono usare le operazioni aritmetiche all'interno di uno script di shell?
Le operazioni aritmetiche possono essere eseguite all'interno di uno script di shell utilizzando vari metodi integrati. La shell fornisce meccanismi per semplici calcoli aritmetici utilizzando l'espansione aritmetica Come:
- Espansione aritmetica ($((…)))
- Utilizzando il comando expr
- Usando let Comando
Ecco il nostro script Shell che spiega tutti e tre i metodi per le operazioni aritmetiche.
#!/bin/bash
numero1=10
numero2=5#Espansione aritmetica ($((…)))
risultato=$((num1 + num2))
echo Somma: $risultato#Utilizzo del comando expr
somma=$(espr $num1 + $num2)
echo Somma: $somma#Utilizzando let Command
sia somma = num1 + num2
echo Somma: $sommaarraylist java
Spiegazione:
- `#!/bin/bash` : Questo è lo shebang, specificando che lo script deve essere interpretato utilizzando la shell Bash.
- 'num1=10'. e ` num2=5` : Queste righe assegnano i valori 10 e 5 alle variabili ` numero1 'e''. numero2 ', rispettivamente.
- `#Espansione aritmetica ($((…)))` : Questo è un commento che indica l'inizio della sezione che dimostra l'espansione aritmetica.
- `risultato=$((num1 + num2))` : Questa riga utilizza l'espansione aritmetica per calcolare la somma di ` numero1 'e''. numero2 ` e memorizza il risultato nel file ` risultato `variabile.
- 'echo Somma: $risultato'. : Questa riga stampa la somma calcolata utilizzando il valore memorizzato nel file ` risultato `variabile.
- '#Utilizzo del comando expr'. : Questo è un commento che indica l'inizio della sezione che dimostra l'uso del ` espr ` comando per operazioni aritmetiche.
- `somma=$(espr $num1 + $num2)` : Questa riga utilizza il ` espr ` comando per calcolare la somma di ` numero1 'e''. numero2 ` e memorizza il risultato nel file ` somma `variabile. Si noti che il ` espr Il comando ` richiede spazi attorno agli operatori.
- `echo Somma: $somma` : Questa riga stampa la somma calcolata utilizzando il valore memorizzato nel file ` somma `variabile.
- `#Utilizzando lascia Comando` : Questo è un commento che indica l'inizio della sezione che dimostra l'uso del ` permettere ` comando per operazioni aritmetiche.
- `somma = num1 + num2″` : Questa riga utilizza il ` permettere ` comando per calcolare la somma di ` numero1 'e''. numero2 ` e assegna il risultato a ` somma `variabile. Il ` permettere Il comando ` non richiede spazi attorno agli operatori.
- `echo Somma: $somma` : Questa riga stampa la somma calcolata utilizzando il valore memorizzato nel file ` somma `variabile.

aritmetica
28) Creare uno script che controlli se un host di rete è raggiungibile.
Ecco un semplice script di shell che utilizza il comando ping per verificare se un host di rete è raggiungibile:
#!/bin/bash
ospite=″
if [ -z $host ]; Poi
eco Utilizzo: $ 0
uscita 1
Essere
ping -c 4 $host
se [$? -eq0]; Poi
echo $host è raggiungibile.
altro
echo $host non è raggiungibile.
Essere
Spiegazione:
- Prende un nome host o un indirizzo IP come argomento e controlla se l'argomento viene fornito.
- Se non viene fornito alcun argomento, visualizza un messaggio di utilizzo ed esce.
- Utilizza il comando ping con l'opzione -c 4 per inviare quattro richieste echo ICMP all'host specificato.
- Dopo l'esecuzione, il comando ping controlla lo stato di uscita ($?). Se lo stato di uscita è 0, significa che l'host è raggiungibile e lo script stampa un messaggio di successo. Altrimenti, stampa un messaggio di errore.
Nota : Dobbiamo fornire un nome host come argomento durante l'esecuzione dello script. Qui abbiamo utilizzato google.com
29) Scrivi uno script di shell per trovare l'elemento più grande in un array:
Ecco uno script di shell per trovare l'elemento più grande in un array.
#!/bin/bash
# Dichiara un array
matrice=(3 56 24 89 67)# Inizializza una variabile per memorizzare il valore massimo, iniziando dal primo elemento
massimo=${array[0]}
# Itera attraverso l'array
per numero in ${array[@]}; Fare
# Confronta ogni elemento con il massimo corrente
se ((num> max)); Poi
massimo=$num
Essere
Fatto# Stampa il valore massimo
echo L'elemento massimo nell'array è: $max
Spiegazione:
- ` #!/bin/bash `: La riga shebang specifica che lo script deve essere interpretato utilizzando la shell Bash.
- ` matrice=(3 56 24 89 67) `: L'array viene dichiarato e inizializzato con valori.
- ` massimo=${array[0]} `: `max` viene inizializzato con il primo elemento dell'array.
- ` per numero in ${array[@]}; Fare `: Un ciclo `for` viene utilizzato per scorrere gli elementi dell'array.
- ` se ((num> max)); Poi `: un'istruzione `if` controlla se l'elemento corrente `num` è maggiore del massimo corrente `max`.
- ` max=$num`: Se`num ` è maggiore di `max`, `max` viene aggiornato con il valore di num.
- ` Fatto `: Il ciclo `for` è chiuso.
- ` echo L'elemento massimo nell'array è: $max `: Infine, lo script stampa il valore massimo trovato nell'array.

numero maggiore
30) Scrivere uno script per calcolare la somma degli elementi in un array.
#!/bin/bash
# Dichiara un array
matrice=(1 65 22 19 94)
# Inizializza una variabile per memorizzare la somma
somma=0
# Scorrere l'array e aggiungere ogni elemento alla somma
per numero in ${array[@]}; Fare
am=$((am + am))
Fatto# Stampa la somma
echo La somma degli elementi nell'array è: $sum
Spiegazione:
` #!/bin/bash `: La riga shebang specifica che lo script deve essere interpretato utilizzando la shell Bash.
` matrice=(1 65 22 19 94) `: L'array viene dichiarato e inizializzato con valori.
` somma=0 `:` somma ` viene inizializzato a zero per contenere la somma degli elementi.
` per numero in ${array[@]}; Fare `: Un` per Il ciclo ` viene utilizzato per scorrere gli elementi dell'array.
` am=$((am + am)) `: All'interno del ciclo, ogni elemento ` nessuno ' viene aggiunto a ' somma `variabile.
` Fatto `: Il ` per `il ciclo è chiuso.
`echo La somma degli elementi nell'array è: $sum`: Infine, lo script stampa la somma di tutti gli elementi nell'array.

Somma degli elementi
Ulteriori informazioni sugli script di shell
- Differenza tra shell e kernel
- Differenza tra Shell vincolata e Shell inversa
- Introduzione alla shell Linux e allo scripting della shell
Conclusione
Tutti i geek sappiamo che lo script di shell è molto utile per aumentare la produttività del lavoro e anche per risparmiare tempo. Quindi, in questo articolo abbiamo trattato 30 esempi di script di shell molto utili e la maggior parte dei truffatori . Ci auguriamo che questa guida completa sull'esempio di scripting di shell ti aiuti a comprendere tutto sugli script di shell.