50% di sconto tutti i piani, offerta a tempo limitato. A partire da $2.48/mo
10 min rimasti
Server e sistema operativo

Bash if Statement: sintassi, varianti, casi d'uso, comandi e altro!

Pio Bodenmann By Pio Bodenmann lettura di 10 minuti Aggiornato 28 gennaio 2024
scripting bash

Negli script di shell, le istruzioni if di Bash svolgono un ruolo cruciale consentendo ai programmatori di creare percorsi di esecuzione condizionata in base a situazioni diverse. Fondamentalmente, le istruzioni if ci permettono di prendere decisioni all'interno degli script Bash, considerando fattori come risultati di test, input dell'utente o stati del sistema. È come un modo per navigare tra diverse possibilità.

Quando si usa lo scripting Bash, un'istruzione if segue una struttura specifica. Tipicamente inizia con la parola chiave "if", seguita dalla condizione che deve essere valutata, dalla parola chiave "allora" e da uno o più comandi da eseguire se la condizione è vera.

Per rendere le cose più flessibili, l'istruzione if può includere anche un'istruzione "elif" (altrimenti se) opzionale, che entra in gioco quando la condizione iniziale è falsa. Ti permette di testare una condizione aggiuntiva e procedere di conseguenza. Inoltre, l'istruzione if può avere un'istruzione "else" opzionale, che si esegue se nessuna delle condizioni è vera.

Combinando istruzioni if con altri comandi Bash e funzionalità dello scripting di shell, i programmatori possono creare script avanzati in grado di automatizzare compiti e processi complessi. Rimani con noi per scoprire di più sull'istruzione if di Bash, inclusa la sua sintassi, i casi d'uso e gli esempi!

Sintassi dell'istruzione Bash If

La sintassi Bash definisce le regole che governano la struttura e la grammatica dei comandi e degli script scritti nel linguaggio della shell Bash. La sintassi Bash include vari costrutti ed elementi, come:

  • Comandi: Sono i singoli programmi eseguibili o i built-in della shell utilizzati per eseguire compiti specifici. Passerai la maggior parte del tempo con la programmazione Bash lavorando con queste istruzioni.
  • Argomenti: Sono valori passati ai comandi per specificare opzioni, parametri o dati di input. Pensali come condizioni impostate per un comando per specificare i suoi parametri di esecuzione.
  • Variabili: Sono simboli che rappresentano valori che possono essere assegnati, manipolati o utilizzati nelle espressioni. Vengono comunemente usati per determinare i valori con cui sia i comandi che gli argomenti devono fare i conti.
  • Reindirizzamento: È il processo di reindirizzare l'input, l'output o gli errori verso o da file, dispositivi o altri comandi. Senza questi, c'è un'alta probabilità che i tuoi comandi finiscano nel posto sbagliato e rovinino il tuo codice.
  • Tubi: È un meccanismo per connettere l'output di un comando all'input di un altro comando. Vengono generalmente utilizzate per eseguire righe di comando condizionali avanzate in programmi grandi e per creare righe di comando interconnesse.
  • Strutture di controllo: Sono costrutti che controllano il flusso di esecuzione dei comandi, come cicli, condizioni e funzioni. Comprendere la struttura di controllo è fondamentale per creare righe di comando nuove e aggiunge un altro livello di profondità al tuo codice.
  • Commenti: Sono annotazioni ignorate dalla shell e utilizzate per documentare il codice o fornire spiegazioni. Sono punti di riferimento importanti durante l'analisi e il debug, soprattutto nei progetti di gruppo.

La sintassi Bash deve essere scritta correttamente affinché la shell interpreti ed esegua i comandi. Gli errori di sintassi possono causare messaggi di errore o comportamenti inaspettati della shell.

Ecco l'istruzione Bash if in azione:

if condition
then
   command1
   command2
   ...
   commandN
elif condition2
then
   commandA
   commandB
   ...
   commandC
else
   commandX
   commandY
   ...
   commandZ
fi

Nel caso che abbiamo qui, la "condition" si riferisce a un test che produce un risultato di vero o falso. Quando la condizione è vera, i comandi successivi specificati dopo la parola chiave "then" vengono eseguiti. Ora, supponiamo di voler valutare una condizione aggiuntiva. Possiamo usare la parola chiave "elif" per farlo. Fornisce un modo per considerare un'altra possibilità. Ora, se nessuna delle condizioni è vera, i comandi specificati dopo la parola chiave "else" entrano in gioco. È come un piano di riserva. Infine, per indicare la conclusione dell'istruzione if, usiamo la parola chiave "fi".

Come funzionano le istruzioni Bash?

Quando si tratta di scripting Bash, l'istruzione if diventa molto utile nel guidare il flusso dello script in base al risultato di un test condizionale. Il suo scopo ruota attorno alla valutazione di una condizione e, se risulta vera, all'esecuzione di un insieme specifico di comandi.

Ora, diamo uno sguardo a come di solito le cose si svolgono quando un'istruzione if entra in gioco all'interno di uno script Bash. Lo script impiega un momento per valutare la condizione menzionata nell'istruzione if. Se la condizione risulta vera, i comandi elencati nel blocco "then" hanno la loro occasione per eseguirsi.

Tuttavia, se la condizione risulta falsa, lo script procede a valutare eventuali condizioni elif aggiuntive. Se una di queste condizioni è vera, i comandi del blocco elif corrispondente entrano in azione. Nei casi in cui nessuna delle condizioni specificate nelle istruzioni if e elif risulta vera, lo script riconosce questo e procede a eseguire i comandi specificati all'interno del blocco else (se un blocco else è stato incluso).

Essenzialmente, l'istruzione if serve a facilitare il processo decisionale all'interno di uno script, permettendogli di percorrere diversi percorsi di esecuzione a seconda del risultato del test. Il test stesso può tenere conto di vari fattori, come l'esito di un comando o il valore assegnato a una variabile.

Istruzione Bash If con esempi

Ora usciamo dalla teoria di base e vediamo come un'istruzione Bash if può essere utilizzata nello sviluppo attivo della codifica. Ecco un esempio che dimostra come funziona un'istruzione Bash if:

#!/bin/bash
# set a variable
x=5
# evaluate the variable
if [ $x -gt 4 ]
then
  echo "x is greater than 4."
else
  echo "x is less than or equal to 4."
fi

In questo esempio, l'istruzione if valuta il valore della variabile x. Se x è maggiore di 4, lo script esegue il comando per stampare "x is greater than 4". Se x è minore o uguale a 4, lo script esegue il comando per stampare "x is less than or equal to 4".

Ora che hai una solida comprensione dell'istruzione Bash If di base e di come funziona, approfondiamo le variazioni e i comandi correlati e scopriamo di più su Istruzioni If di base, Istruzioni If annidate, Bash If Else, If Elif Else e Istruzioni Case una per una.

Istruzioni Condizionali di Base

Iniziamo con l'istruzione bash if di base. L'istruzione if in Bash verifica se una condizione è vera ed esegue di conseguenza un blocco di codici correlati. Ecco la sintassi:

if [ condition ]
then
  commands
fi

Nel caso che stiamo avendo qui, lo script valuta la condizione e, se è vera, i comandi specificati vengono eseguiti. Se la condizione è falsa, lo script passa al comando successivo senza eseguire il blocco all'interno della sezione "then".

Istruzioni If Annidate

Un'istruzione if annidata, come suggerisce il nome creativo, è un'istruzione if "annidata" all'interno di un'altra istruzione if. Questa struttura annidata consente test e analisi più complessi all'interno di uno script. Ecco un esempio di un'istruzione if annidata:

if [ condition1 ]
then
  if [ condition2 ]
  then
    commands
  fi
fi

Puoi vedere nei comandi che lo script valuta condition1 come primo passo. Se condition1 risulta vera, lo script valuta poi condition2. Se anche condition2 è vera, lo script esegue i comandi necessari.

Istruzioni Bash If Else

L'istruzione if else di Bash ti permette di prendere decisioni all'interno dello script in base al fatto che una condizione sia vera o falsa, consentendo un'esecuzione del codice più avanzata e situazionale. Ecco come si presenta la struttura:

if [ condition ]
then
  commands1
else
  commands2
fi

Questo costrutto garantisce che se la condizione è vera, lo script esegue rapidamente "commands1". Se invece la condizione è falsa, il script passa all'esecuzione di "commands2".

Istruzioni If Elif Else

A volte è necessario considerare più condizioni e i loro risultati rispettivi. L'istruzione if elif else ti permette di fare esattamente questo. Osserva la sintassi seguente:

if [ condition1 ]
then
  commands1
elif [ condition2 ]
then
  commands2
else
  commands3
fi

Qui, lo script valuta prima condition1. Se risulta vera, esegue rapidamente commands1. Se invece condition1 è falsa, lo script passa alla valutazione di condition2. Se condition2 è vera, procede all'esecuzione di commands2. Se infine sia condition1 che condition2 risultano false, lo script esegue l'alternativa, ovvero commands3.

Istruzioni Condizionali

In Bash, hai a disposizione l'istruzione case, che funziona in modo simile a un'istruzione switch in altri linguaggi di programmazione. Fornisce un modo per eseguire diverse serie di comandi in base al valore di una variabile. Dai un'occhiata alla struttura:

case expression in
  pattern1)
    commands1;;
  pattern2)
    commands2;;
  pattern3)
    commands3;;
*)
default commands;;
esac

Qui, lo script valuta l'espressione variable e la confronta con vari pattern. Quando viene trovata una corrispondenza, viene eseguita la serie di comandi corrispondente. Se invece non viene trovata alcuna corrispondenza, vengono elegantemente eseguiti i comandi predefiniti. Il pattern asterisco (*) funge da wildcard, corrispondendo a qualsiasi cosa non sia stata coperta.

Operatori Logici Bash

Un'altra parte importante del funzionamento dell'istruzione if di Bash è l'Operatore Logico. Questi operatori ti permettono di combinare più condizioni, consentendoti di prendere decisioni basate sulla verità o falsità di queste condizioni combinate. Bash incorpora tre operatori logici primari da utilizzare nelle istruzioni if. Ecco esempi dei tre principali tipi di comandi con operatori logici.

  • Bash AND (&&):
if [ $age -ge 18 ] && [ "$citizen" == "yes" ]; then
  echo "You meet the criteria for voting."
fi
  • Logical or (||):
if [ "$status" == "active" ] || [ "$role" == "admin" ]; then
  echo "Access granted."
fi
  • Non uguale a:
if(( ! $a == "true" )) then 
  echo "a" was initially false. 
else
  echo "a" was initially true. 
fi

Conclusione

In questo articolo, abbiamo fornito una guida introduttiva alle istruzioni if di Bash e a come utilizzarle. Abbiamo anche discusso come possono rendere il tuo codice molto più ordinato e funzionale. Utilizzando efficacemente questi enunciati condizionali, puoi creare script potenti in grado di gestire compiti complessi e processi decisionali.

Sei nuovo nel mondo di Linux? Lascia che siamo la tua guida in questo affascinante percorso! Il nostro Linux VPS è il punto di partenza perfetto per i principianti, offrendo semplicità senza compromessi sulla potenza. Con interfacce intuitive e supporto esperto, troverai più facile che mai sfruttare le capacità di un server Linux. Che tu stia configurando un sito web, testando applicazioni o esplorando il vasto mondo di Linux, il nostro Linux VPS offre un ambiente sicuro e privo di complicazioni. Muovi i tuoi primi passi nell'universo Linux con fiducia – dai un'occhiata alle nostre opzioni Linux VPS oggi e inizia la tua avventura con Linux!

Hosting Linux VPS

Scegli un Linux VPS economy o premium per ospitare il tuo sito web o desktop remoto, al prezzo più conveniente disponibile. VPS In esecuzione su Linux KVM per un'efficienza maggiore e in funzione su hardware potente con storage NVMe SSD per una velocità superiore.

Leggi di più

Domande frequenti

Posso usare gli operatori logici nelle istruzioni if di Bash?

Sì, puoi usare gli operatori logici come & e '||' nelle istruzioni if di Bash. Ad esempio, if [ $var -gt 0 ] && [ $var -lt 10 ]; then … eseguirà il blocco di codice se $var è maggiore di 0 e minore di 10.

Posso usare più condizioni in una singola istruzione if?

Sì, puoi usare più condizioni di Bash in una singola istruzione if utilizzando operatori logici come -a (AND) o -o (OR) per combinarle. Ad esempio, if [ $var -gt 0 -a $var -lt 10 ]; then … eseguirà il blocco di codice se $var è maggiore di 0 E minore di 10.

Posso usare la sostituzione di comando negli if statement di Bash?

Sì, puoi usare la sostituzione di comando negli if statement di Bash racchiudendo il comando tra $() o backticks (Translate what? I see the text "). For example," but there's no content before or after it to translate. Please provide the complete English text you'd like me to translate to Italian. if [ $(whoami) == "root" ]; then … eseguirà il blocco di codice se l'utente corrente è root.

[[ vs [ vs ( vs ((: Qual è la differenza tra questi operatori Bash?

In breve, [[ si usa per test condizionali avanzati. [ si usa per test condizionali di base. ( si usa per raggruppamento di subshell ed esecuzione di comandi. (( si usa per operazioni aritmetiche.

 

Condividi

Altro dal blog

Continua a leggere.

Le migliori app self-hosted che puoi eseguire con Cosmos Cloud: immagine di copertina con pannelli di app intorno a una dashboard Cosmos.
Server e sistema operativo

Le migliori app self-hosted che puoi eseguire con Cosmos Cloud: file, media, password, automazione e altro!

Dopo aver configurato Cosmos Cloud e voler vedere quali app si abbinano bene, oppure non hai ancora deciso su Cosmos e vuoi semplicemente scoprire quanto bene si adatta al tuo flusso di lavoro

Nick ArgentoNick Argento lettura di 16 minuti
Portainer vs Cosmos Cloud per la gestione di app Docker: copertina con diagramma di configurazione ibrida e diagramma di operazioni neon rispetto ai blocchi di accesso.
Server e sistema operativo

Portainer vs Cosmos Cloud: quale scegliere per la gestione di app Docker

Se conosci già Docker e vuoi semplicemente un modo più pulito per eseguire uno stack di app in crescita, ecco la risposta breve a Portainer vs Cosmos Cloud. Portainer è la scelta più forte per

Nick ArgentoNick Argento 14 minuti di lettura
Cosmos Cloud vs CasaOS vs Umbrel: grafica di confronto che mostra tre percorsi self-hosted all'interno di un'astrazione unica di rete cloud.
Server e sistema operativo

Cosmos Cloud vs CasaOS vs Umbrel: quale piattaforma self-hosted si adatta al tuo setup?

La risposta breve è che CasaOS è ancora il punto di partenza più semplice, Umbrel ha l'aspetto più curato e pulito, e Cosmos Cloud ha più senso quando vuoi un controllo più stretto sui domini

Nick ArgentoNick Argento 11 min di lettura

Pronto per il deployment? A partire da $2,48/mese.

Cloud indipendente, dal 2008. AMD EPYC, NVMe, 40 Gbps. Rimborso entro 14 giorni.