Best practice di programmazione bash

Best practice di programmazione bash
Bash è uno dei gusci più popolari disponibili su Linux. È semplice, veloce e leggero. Oltre a interpretare ed eseguire i comandi, Bash può funzionare con gli script per automatizzare un particolare insieme di attività.

Questa guida elabora alcune delle pratiche comuni nella programmazione bash.

Bash Scripting

Bash è un programma di shell responsabile dell'interpretazione e dell'esecuzione dei comandi. Oltre all'esecuzione di comandi manuali, Bash supporta anche gli script. Questi script sono un insieme di comandi dichiarati in un file di testo. Bash Scripting è un linguaggio di programmazione semplice e accessibile da imparare su Linux. È un requisito se sei interessato ai lavori di amministrazione di sistema.

Come qualsiasi altra abilità, la persistenza e la ripetizione ti aiuteranno a migliorare. Sebbene non ci siano regole fisse di regole, ecco alcune delle abitudini che possono migliorare considerevolmente la qualità della tua sceneggiatura.

Adeguata rientro
Il rientro è una grande parte della codifica. Il corretto rientro è fondamentale per avere un codice leggibile e mantenibile.

Il corretto rientro può essere un vero e proprio se stessi lavorando con più livelli di logica. Il rientro rende facile riconoscere i livelli logici.

Ecco un esempio di script multi-logico con corretta rientro.

#!/Bin/Bash
Leggi -p "Immettere un valore" var_x
if [$ ((var_x%2)) -eq 0]; Poi
uscita 0
altro
Uscita 1
fi

Ecco come sarà il codice senza una corretta rientranza.

#!/Bin/Bash
Leggi -p "Immettere un valore" var_x
if [$ ((var_x%2)) -eq 0]; Poi
uscita 0
altro
Uscita 1
fi

Commentando
Commentare è una delle cose più importanti quando si tratta di dare un senso ai codici. I commenti dovrebbero spiegare varie parti del codice, specialmente quando è complesso. È senza sforzo confondersi su più parti del codice, anche i tuoi codici. Se è un grande progetto e altri probabilmente lavoreranno sullo stesso codice in futuro.

Ad esempio, ecco uno script di esempio con e senza commenti.

nome utente = $ 1
# Controlla l'esistenza del nome utente
Grep ^$ nome utente: /etc /passwd
Se [$? != 0]; Poi
Echo "Nessun utente di questo tipo: $ nome utente"
Uscita 1
fi
utente = $ 1
Grep ^$ nome utente: /etc /passwd
Se [$? != 0]; Poi
Echo "$ nome utente non trovato"
Uscita 1
fi

Codice di ritorno se qualcosa va storto
Quando qualcosa va storto, restituire un valore diverso da zero è sempre una buona idea. Un codice può funzionare male in qualsiasi momento, soprattutto con i condizionali. Avere un codice di ritorno con cui lavorare può salvare una tonnellata di seccatura. Rende il debug più efficace.

In questo esempio, determineremo se un numero è dispari o anche. Invece di stampare l'output, il codice di uscita segnalerà quale sia stato il risultato.

#!/Bin/Bash
Leggi -p "Immettere un valore" var_x
if [$ ((var_x%2)) -eq 0]; Poi
uscita 0
altro
Uscita 1
fi

Lo script esiste dopo errore
In molte situazioni, Bash continuerà a eseguire lo script anche quando una parte specifica fallisce, incidendo sul resto dello script.

Per garantire che la sceneggiatura esista ad affrontare un errore fatale, si consiglia di avere le seguenti righe all'inizio.

$ set -o errexit

A volte, Bash può anche provare a utilizzare una variabile non dichiarata, causando un errore logico. L'uso del comando seguente assicurerà che Bash smetterà di eseguire lo script se utilizza una variabile non dichiarata.

$ set -o nounset

Sostituzione del comando
In situazioni, potrebbe essere necessario lavorare con l'output di un comando particolare. Possiamo farlo usando la sostituzione del comando.

La sottostazione di comando ha diversi modi di implementazione.

$ echo 'echo "Hello World"'
$ echo $ (echo "Hello World)

Si consiglia sempre di utilizzare la seconda opzione

Nome variabile significativo
Le variabili sono parte integrante di uno script di bash complesso. Ogni variabile dovrebbe avere un nome proprio che indica il suo utilizzo.

Spesso i modelli di nome possono anche tempo; Le persone eviteranno di scrivere alcuni personaggi extra in cambio di guadagno di tempo a breve termine. Tuttavia, tale pratica è una ricetta per il disastro. Quando si tratta della manutenzione a lungo termine di tale codice, può essere complicato dare un senso a una variabile.

Sarebbe meglio se anche tu fossi coerente nelle variabili di denominazione. I modelli di nome variabile casuali possono anche portare alla confusione in futuro.

Guarda i due codici di esempio, entrambi svolgendo lo stesso compito. Con quale codice è meglio capire e lavorare?

#!/Bin/Bash
leggi -p "Immettere lunghezza:" x
Leggi -p "Inserisci la larghezza:" y
z = $ [$ x*$ y]
Echo "Area: $ Z"
#!/Bin/Bash
Leggi -p "INVIO LUNGHITÀ:" Lunghezza
Leggi -p "Enter Width:" Larghezza
area = $ [$ lunghezza*$ larghezza]
Echo "Area: $ area"

In Bash, tutte le variabili di ambiente sono denominate con lettere maiuscole. Si consiglia di utilizzare lettere minuscole per le variabili di script per evitare conflitti.

Usando le funzioni
Nella programmazione bash, una funzione è un modo per raggruppare i comandi che possono essere eseguiti in seguito. Aiuta a ridurre la ripetizione del codice. Le funzioni rendono anche il codice più leggibile e gestibile.

Ora, ci sono scenari specifici in cui le funzioni hanno senso. Se stai usando una manciata di comandi focalizzati, l'impostazione di una funzione può farti risparmiare molti problemi. Se stai usando un solo comando, avere una funzione non ha alcun impatto sull'efficienza.

Come le variabili, i nomi delle funzioni dovrebbero essere significativi.

funzione fn_odd ()
Var_x locale
Leggi -p "Enter Number" var_x
Leggi var_x
if [$ ((var_x % 2)) -eq 0]; Poi
echo "pari"
altro
Echo "Odd"
fi

Tipi di argomentazioni
In Bash, non esiste un modo fisso per dichiarare un tipo variabile. Può dare origine a confrontare le variabili di tipi di dati in conflitto. Garantire che le variabili e gli argomenti siano lo stesso tipo previsto ti farà risparmiare un sacco di mal di testa.

Nel seguente esempio, lo script stamperà se l'argomento è un numero o no.

Se ! ["$ 1" -eq "$ 1" 2> /dev /null]
Poi
Echo "Errore: non numero"
Uscita 1
fi

Argomenti mancanti o ordine di argomento sbagliato
È sempre una buona idea supporre che l'input dell'utente avrà probabilmente dati errati, non importa cosa. La probabilità è più alta quando l'utente deve inserire più di un argomento.

È necessario disporre di meccanismi di correzione degli errori nei punti di input dell'utente per evitare la catastrofe a causa di input utente errati. Chiarire le istruzioni su ciò che l'utente dovrebbe fare.

Output adeguato
Quando esegui i tuoi script, le persone dovrebbero sapere cosa devono sapere. Non dovrebbero non dovrebbero leggere il tuo codice per comprenderne lo scopo o quello che sta facendo.

Dovrebbero esserci feedback sullo schermo che spiegano cosa sta succedendo dietro le quinte in ogni fase. Ad esempio, quale sarebbe l'esperienza dell'utente se il gestore di pacchetti non stampasse alcun output significativo in varie fasi del suo funzionamento?

Debug
Dopo aver scritto lo script, Bash può controllare la sintassi dello script per errori senza esecuzione. Per eseguire un controllo di sintassi, utilizzare il seguente comando bash.

$ bash -nn

In alternativa, lo shebang può consentire la sintassi di debug.

#!/bin/bash -n

Per eseguire Bash in modalità debug, utilizzare il flag "-x".

$ bash -xx

Può anche far parte dello shebang.

#!/bin/bash -x

Pensieri finali

Queste sono solo una manciata di pratiche di programmazione bash. Queste sono abitudini semplici ma potenti da sviluppare. Questi trucchi assicureranno che i tuoi script bash siano ottimizzati, leggibili e affidabili. Vuoi che i tuoi script di shell siano semplici e semplici, non necessari il più possibile utilizzando comandi di sintassi o shell molto esotici.

Felice calcolo!