russoalessio.dev

Introduzione allo Shell Scripting

Lo shell script è uno strumento potente e versatile che permette di automatizzare operazioni e task ripetitivi sui sistemi operativi Unix/Linux e macOS. Grazie agli script, puoi risparmiare tempo, ridurre gli errori e migliorare notevolmente la produttività. In questo post esploreremo cos’è uno shell script, perché è importante imparare a usarlo e ti guiderò passo passo verso la scrittura del tuo primo script.

Ecco i punti principali che affronteremo:


Cos’è uno Shell Script?

Uno shell script è un file di testo contenente una serie di comandi interpretati da una shell (come Bash, Zsh o altre). La shell esegue in sequenza i comandi scritti nello script, proprio come se fossero digitati manualmente nel terminale.

Esempio di un semplice shell script (salvato in script.sh):

#!/bin/bash

echo "Ciao, mondo!"
date

Per rendere eseguibile lo script, è necessario modificare i permessi con il comando:

chmod +x script.sh

Per eseguire lo script, basta digitare:

./script.sh

Le basi della sintassi della shell

La sintassi di uno shell script è semplice, diretta e potente. Alcune regole generali:

Ecco un esempio:

# Commento: definizione variabile
NOME="Marco"

# Stampa il valore della variabile
echo "Ciao, $NOME!"

Variabili, parametri e argomenti

Le variabili nello shell scripting possono essere definite semplicemente con la sintassi:

VARIABILE="valore"

Non aggiungere spazi prima o dopo il segno =.

Per utilizzare il valore di una variabile, anteponi il simbolo $ al nome della variabile, ad esempio $VARIABILE.

Argomenti dello script

Quando lanci uno script, puoi passargli degli argomenti:

./script.sh arg1 arg2 arg3

Nello script puoi accedere agli argomenti con $1, $2, $3, ecc.

Esempio di script con argomenti:

#!/bin/bash

echo "Primo argomento: $1"
echo "Secondo argomento: $2"

Strutture di controllo

Le strutture di controllo (if, for, while) permettono di prendere decisioni o iterare azioni.

Struttura condizionale if

Sintassi base:

if [ condizione ]; then
    # comandi se vero
else
    # comandi se falso
fi

Esempio:

#!/bin/bash

ETA=20

if [ $ETA -ge 18 ]; then
    echo "Maggiorenne"
else
    echo "Minorenne"
fi

Operatori di confronto comuni:

Ciclo for

Sintassi base:

for variabile in lista_elementi; do
    # comandi
done

Esempio:

#!/bin/bash

for nome in Marco Anna Luca; do
    echo "Ciao, $nome!"
done

Ciclo while

Sintassi base:

while [ condizione ]; do
    # comandi
done

Esempio pratico:

#!/bin/bash

CONTO=1
while [ $CONTO -le 5 ]; do
    echo "Numero: $CONTO"
    ((CONTO++))
done

Funzioni e modularità

Le funzioni permettono di organizzare meglio il codice:

#!/bin/bash

saluta(){
    echo "Ciao, $1!"
}

# Richiama la funzione
saluta "Marco"
saluta "Anna"

Le funzioni rendono lo script più leggibile e riutilizzabile.


Alcuni esempi pratici

Backup di file

Un semplice script di backup:

#!/bin/bash

DATA=$(date +%Y%m%d)
BACKUP_DIR="/tmp/backup_$DATA"

mkdir -p $BACKUP_DIR
cp ~/Documenti/*.txt $BACKUP_DIR

echo "Backup completato in $BACKUP_DIR"

Monitoraggio dello spazio disco

#!/bin/bash

USO_DISCO=$(df -h / | awk 'NR==2 {print $5}')

echo "Utilizzo del disco principale: $USO_DISCO"

Buone pratiche di programmazione shell

Seguire buone pratiche ti aiuterà a scrivere script robusti e facili da mantenere:


Conclusione e consigli utili

Lo shell scripting è una competenza molto utile per automatizzare il lavoro quotidiano e ottimizzare il tempo. Dopo aver esplorato i fondamenti, il prossimo passo è sperimentare con script via via più complessi e integrare altri strumenti di sistema (come grep, sed e awk) per sfruttare al massimo la potenza della shell.

Per approfondire ulteriormente, puoi consultare: