Bash Scripting Introduction
Bash Scripting Introduction
0 Appunti
Inizializzare uno script Bash
1. Come prima cosa creare un file che abbia l’estenzione .sh
2. Poi aggiungere le seguenti righe all’interno del file:
#!/bin/bash
# ...
echo "Hello world"
Dichiarare variabili
In uno script è possibile salvare dei valori uttilizzando delle variabili nella maniera seguente:
i=4
x="Hello world"
echo $x
l=(A B C D)
echo ${l[0]}${l[2]}
Variabili “predefinite”
Parametri posizionali passati allo script:
La variabile $0 corrisponde al nome dello script
Le variabili $1…$n sono gli altri parametri
Numero dei parametri: $#
Tutti i parametri: $@
La variabile $! contiene il PID dell’ultimo processo mandato in background
La variabile $? corrisponde al valore di ritorno dell’ultimo comando eseguito
read nome
echo "Ciao $nome!"
read -p "Come ti chiami?" nome # il parametro p permette di usare un messaggio
echo "Ciao $nome!"
read -s -p "Password?" segreto # il parametro s non viene mostrato a schermo
echo "Conosco il tuo $segreto"
uscita=$(ls | grep A)
echo $uscita
# ...
uscita=`ls`
Espressioni aritmetiche
Essendo che, chi ha creato bash aveva la mamma battona, le espressioni aritmetiche in bash non
hanno senso di esistere, e vengono svolte nel seguente modo:
il comando expr
la forma $(()) ($ viene omesso nelle condizioni if, while, until)
l’espressione let
i=4
j=`expr $i '*' 2`
j=`expr $j + 1`
j=$(( j + 3 ))
let j=j+1
if condizione; then
# ...
elif condizione2; then
# ...
else
# ...
fi
Creazione di funzioni
Come sappiamo esistono due tipologie di funzioni: quelle che ritornano un valore e quelle che invece
non lo ritornano. In bash non c’è questa distinzione e vengono dichiarate nello stesso modo:
i=1
while [ $i -le 10 ]; do
echo “il valore di i è $i”
i=`expr $i + 1`
done
Utilizzo del ciclo for
Per utilizzare il ciclo for possiamo utilizzare sostanzialmente due varianti: for “normale” e for each
for
for i in *.txt; do
echo $i
done
for i in A B C; do
echo $i
done
for each
contatore=10
until [ $contatore -lt 1 ]; do
echo $contatore
let contatore-=1
done