11.04.2013 Views

Guida avanzata di scripting Bash - Portale Posta DMI

Guida avanzata di scripting Bash - Portale Posta DMI

Guida avanzata di scripting Bash - Portale Posta DMI

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

{<br />

}<br />

echo "Questa funzione fa qualcosa con \"$1\"."<br />

fa_qualcosa=fa_qualcosa<br />

fa_qualcosa fa_qualcosa<br />

# Tutto questo è consentito, ma crea estrema confusione.<br />

Capitolo 31. Precauzioni<br />

Non usare impropriamente gli spazi. A <strong>di</strong>fferenza <strong>di</strong> altri linguaggi <strong>di</strong> programmazione, <strong>Bash</strong> è piuttosto<br />

pignola con gli spazi.<br />

var1 = 23 # corretto ’var1=23’.<br />

# Nella riga precedente, <strong>Bash</strong> cerca <strong>di</strong> eseguire il comando "var1"<br />

# con gli argomenti "=" e "23".<br />

let c = $a - $b # corretto ’let c=$a-$b’ o ’let "c = $a - $b"’.<br />

if [ $a -le 5] # corretto if [ $a -le 5 ].<br />

# if [ "$a" -le 5 ] ancora meglio.<br />

# [[ $a -le 5 ]] anche così.<br />

Non dare per scontato che le variabili non inizializzate (variabili a cui non è ancora stato assegnato un<br />

valore) valgano “zero”. Una variabile non inizializzata ha valore “nullo”, non zero.<br />

#!/bin/bash<br />

echo "var_non_inizializzata = $var_non_inizializzata"<br />

# var_non_inizializzata =<br />

Non confondere = e -eq nelle verifiche. Bisogna ricordarsi che = serve per il confronto tra variabili<br />

letterali mentre -eq per quello tra interi.<br />

if [ "$a" = 273 ] # $a è un intero o una stringa?<br />

if [ "$a" -eq 273 ] # $a è un intero.<br />

# Talvolta è possibile scambiare -eq con = senza alcuna conseguenza.<br />

# Tuttavia . . .<br />

a=273.0 # Non è un intero.<br />

if [ "$a" = 273 ]<br />

then<br />

532

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!