sabato 21 maggio 2011

Script per shell - operatori

Prima di dedicare un po di tempo ai costrutti messi a disposizioni dal linguaggio di scripting per il controllo del flusso delle istruzioni è opportuno analizzare gli operatori che è possibile applicare alle variabili. Iniziamo con gli operatori aritmetici. In tal caso è possibile applicare una delle sintassi utilizzate nell'esempio:
#!/bin/bash
A=10
B=5
ris1=$((A+B))
ris2=`expr $A + $B`
let "ris3=A+B"
echo "$A + $B = "$ris1
echo "$A + $B = "$ris2
echo "$A + $B = "$ris3
Questi gli operatori aritmetici che è possibile usare in uno script: + (per la somma), - (per la differenza), \* (per la moltiplicazione), / (per la divisione), ** (per l'elevamento a potenza) e % (per il resto della divisione). Esistono, poi, gli operatori di confronto, riassunti qui di seguito: -eq (uguale a), -ne (non uguale a), -lt (minore di), -gt (maggiore di), -le (minore o uguale di), -ge (maggiore o uguale di). Applicheremo in seguito questi operatori come condizione delle strutture di controllo (ad esempio if... then).
Un'altra famiglia di operatori particolarmente utile è quella per la verifica di file. All'interno di uno script, infatti, può capitare di dover stabilire la presenza di un file (o directory) prima di eseguire un set di istruzioni. Questi i principali operatori per i test su file: -e nome_file, per stabilire se il file esiste; -s nome_file, per stabilire se il file è vuoto; -d nome_file, per stabilire se il file è una directory; -r nome_file, per stabilire se il file ha i permessi in lettura; -w nome_file, per stabilire se il file ha i permessi in scrittura; -x nome_file, per stabilire se il file ha i permessi per l'esecuzione.
Il confronto fra stringhe avviene grazie agli operatori di stringhe: stringa1=stringa2, per stabilire se due stringhe sono uguali (può essere usato anche ==); stringa1!=stringa2, per stabilire se due stringhe sono diverse; -z stringa, per stabilire se la stringa è nulla (non contiene caratteri, è vuota). Quando descriviamo una condizione, possiamo combinare l'esito di più confronti legandoli logicamente con gli operatori logici: espressione1 -a espressione2, per l'and logico (ritorna 0 se è vera sia espressione1 che espressione2, è possibile usare &&); espressione2 -o espressione2, per l'or logico (ritorna 0 se è vera espressione1, oppure espressione2, oppure entrambe, è possibile usare ||).
Nei prossimi articoli vedremo da vicino le strutture di controllo e utilizzeremo gli operatori visti sopra.

Nessun commento:

Posta un commento