Unix / Linux - Operatori di Shell di Base
Ciao, futuri programmatori! Sono entusiasta di guidarvi attraverso il mondo affascinante degli operatori di shell Unix/Linux. Come qualcuno che ha insegnato scienze informatiche per oltre un decennio, posso assicurarvi che padroneggiare questi operatori sarà un cambiamento di gioco nel vostro percorso di programmazione. Immersi!
Operatori Aritmetici
Gli operatori aritmetici sono i mattoni fondamentali delle operazioni matematiche nello scripting di shell. Loro ci permettono di eseguire calcoli di base all'interno dei nostri script.
Ecco una tabella degli operatori aritmetici più comuni:
Operatore | Descrizione | Esempio |
---|---|---|
+ | Addizione | expr $a + $b |
- | Sottrazione | expr $a - $b |
* | Moltiplicazione | expr $a \* $b |
/ | Divisione | expr $a / $b |
% | Modulo | expr $a % $b |
= | Assegnazione | a=$b |
Guardiamo un esempio pratico:
#!/bin/bash
a=10
b=5
echo "Addizione: `expr $a + $b`"
echo "Sottrazione: `expr $a - $b`"
echo "Moltiplicazione: `expr $a \* $b`"
echo "Divisione: `expr $a / $b`"
echo "Modulo: `expr $a % $b`"
In questo script, stiamo usando il comando expr
per eseguire operazioni aritmetiche. Le backticks () vengono utilizzate per eseguire il comando
expr` e sostituire la sua uscita.
Quando eseguiamo questo script, vedremo:
Addizione: 15
Sottrazione: 5
Moltiplicazione: 50
Divisione: 2
Modulo: 0
Ricorda, nello scripting di shell, gli spazi sono cruciali. expr$a+$b
non funzionerà, ma expr $a + $b
funzionerà. È come dare alle tue variabili lo spazio per respirare!
Operatori Relazionali
Gli operatori relazionali vengono utilizzati per confrontare valori. Sono essenziali per creare condizioni nei tuoi script.
Ecco una tabella degli operatori relazionali:
Operatore | Descrizione | Esempio |
---|---|---|
-eq | Uguale a | [ $a -eq $b ] |
-ne | Diverso da | [ $a -ne $b ] |
-gt | Maggiore di | [ $a -gt $b ] |
-lt | Minore di | [ $a -lt $b ] |
-ge | Maggiore o uguale a | [ $a -ge $b ] |
-le | Minore o uguale a | [ $a -le $b ] |
Vediamo questi in azione:
#!/bin/bash
a=10
b=20
if [ $a -eq $b ]
then
echo "$a è uguale a $b"
elif [ $a -gt $b ]
then
echo "$a è maggiore di $b"
else
echo "$a è minore di $b"
fi
Questo script confronta a
e b
utilizzando operatori relazionali. Quando lo eseguiamo, vedremo:
10 è minore di 20
Consiglio professionale: Pensa a questi operatori come a domande. "-eq" è come chiedere "Sono questi uguali?", "-gt" è come chiedere "Questo è maggiore di quello?". Aiuta a verbalizzare queste comparazioni quando stai scrivendo i tuoi script.
Operatori Booleani
Gli operatori booleani ci permettono di combinare più condizioni. Sono come la colla logica dei tuoi script.
Ecco una tabella degli operatori booleani:
Operatore | Descrizione | Esempio |
---|---|---|
! | NOT | [ ! false ] |
-o | OR | [ $a -lt 20 -o $b -gt 100 ] |
-a | AND | [ $a -lt 20 -a $b -gt 100 ] |
Vediamo come usarli in uno script:
#!/bin/bash
a=10
b=20
if [ $a -lt 20 -a $b -gt 15 ]
then
echo "Entrambe le condizioni sono vere"
else
echo "Almeno una condizione è falsa"
fi
Quando eseguiamo questo script, vedremo:
Entrambe le condizioni sono vere
Mi piace pensare agli operatori booleani come strumenti decisionali. Aiutano il tuo script a fare scelte basate su più fattori, proprio come facciamo nella vita reale!
Operatori di Stringa
Gli operatori di stringa vengono utilizzati per confrontare e manipolare stringhe di testo. Sono incredibilmente utili quando si lavora con dati testuali.
Ecco una tabella degli operatori di stringa:
Operatore | Descrizione | Esempio |
---|---|---|
= | Uguale a | [ $a = $b ] |
!= | Diverso da | [ $a != $b ] |
-z | Stringa è vuota | [ -z $a ] |
-n | Stringa non è vuota | [ -n $a ] |
str | Stringa non è vuota | [ $a ] |
Vediamo questi in azione:
#!/bin/bash
a="Hello"
b="World"
if [ $a = $b ]
then
echo "Le stringhe sono uguali"
elif [ -z $a ]
then
echo "La stringa a è vuota"
elif [ -n $b ]
then
echo "La stringa b non è vuota"
else
echo "Nessuna delle condizioni sopra è vera"
fi
Quando eseguiamo questo script, otterremo:
La stringa b non è vuota
Gli operatori di stringa sono come le regole grammaticali dello scripting di shell. Aiutano a fare senso del testo con cui il tuo script sta lavorando.
Operatori di Test di File
Gli operatori di test di file vengono utilizzati per testare diverse condizioni di file. Sono essenziali quando il tuo script deve interagire con file e directory.
Ecco una tabella di alcuni operatori di test di file comuni:
Operatore | Descrizione | Esempio |
---|---|---|
-d file | Directory esistente | [ -d $file ] |
-f file | File esistente e è un file regolare | [ -f $file ] |
-r file | File è leggibile | [ -r $file ] |
-w file | File è scrivibile | [ -w $file ] |
-x file | File è eseguibile | [ -x $file ] |
-s file | File non ha dimensione zero | [ -s $file ] |
Vediamo questi in azione:
#!/bin/bash
file="/etc/passwd"
if [ -f $file ]
then
echo "Il file esiste"
if [ -r $file ]
then
echo "Il file è leggibile"
fi
if [ -w $file ]
then
echo "Il file è scrivibile"
fi
if [ -x $file ]
then
echo "Il file è eseguibile"
fi
else
echo "Il file non esiste"
fi
Quando eseguiamo questo script, potremmo vedere qualcosa come:
Il file esiste
Il file è leggibile
Gli operatori di test di file sono come gli strumenti detective del tuo script. Aiutano il tuo script a capire cosa può e cosa non può fare con diversi file.
Operatori di Shell C
La Shell C (csh) ha il proprio set di operatori che sono leggermente diversi dalla Shell Bourne. Ecco alcuni esempi:
#!/bin/csh
set a = 10
set b = 20
if ($a == $b) then
echo "a è uguale a b"
else if ($a != $b) then
echo "a non è uguale a b"
endif
if ($a > $b) then
echo "a è maggiore di b"
else if ($a < $b) then
echo "a è minore di b"
endif
Nella Shell C, usiamo ==
per l'uguaglianza e !=
per la disuguaglianza. Possiamo anche usare direttamente >
e <
per i confronti.
Operatori di Shell Korn
La Shell Korn (ksh) combina funzionalità sia dalla Shell Bourne che dalla Shell C. Ecco un esempio:
#!/bin/ksh
a=10
b=20
if ((a == b))
then
print "a è uguale a b"
elif ((a != b))
then
print "a non è uguale a b"
fi
if ((a > b))
then
print "a è maggiore di b"
elif ((a < b))
then
print "a è minore di b"
fi
Nella Shell Korn, possiamo usare ((
e ))
per le operazioni aritmetiche e i confronti, il che rende la sintassi più pulita e intuitiva.
Ricorda, la pratica rende perfetto! Non aver paura di sperimentare con questi operatori nei tuoi script. Ogni volta che li usi, diventerai più a tuo agio e competente. Buon scripting!
Credits: Image by storyset