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.

shopt<br />

caller<br />

true<br />

Capitolo 11. Coman<strong>di</strong> interni e builtin<br />

Questo comando permette <strong>di</strong> cambiare le opzioni <strong>di</strong> shell al volo (ve<strong>di</strong> Esempio 24-1 e Esempio<br />

24-2). Appare spesso nei file <strong>di</strong> avvio (startup) <strong>Bash</strong>, ma può essere usato anche in altri script. È<br />

necessaria la versione 2 o seguenti <strong>di</strong> <strong>Bash</strong>.<br />

shopt -s cdspell<br />

# Consente le errate <strong>di</strong>gitazioni, non gravi, dei nomi delle <strong>di</strong>rectory quando<br />

#+ si usa ’cd’<br />

cd /hpme # Oops! Errore ’/home’.<br />

pwd # /home<br />

# La shell ha corretto l’errore <strong>di</strong> <strong>di</strong>gitazione.<br />

Inserendo il comando caller all’interno <strong>di</strong> una funzione vengono visualizzate allo stdout<br />

informazioni su chi ha richiamato quella funzione.<br />

#!/bin/bash<br />

funzione1 ()<br />

{<br />

# All’interno <strong>di</strong> funzione1 ().<br />

caller 0 # Dimmi tutto.<br />

}<br />

funzione1 # Riga 9 dello script.<br />

# 9 main test.sh<br />

# ^ Numero della riga dove la funzione è stata richiamata.<br />

# ^^^^ Invocata dalla parte "main" dello script.<br />

# ^^^^^^^ Nome dello script chiamante.<br />

caller 0 # Non ha alcun effetto perché non è in una funzione.<br />

Il comando caller può restituire anche informazioni sul chiamante se inserita uno script caricato con<br />

source all’interno <strong>di</strong> un altro script. Come una funzione, si tratta <strong>di</strong> una “chiamata <strong>di</strong> subroutine.”<br />

Questo comando potrebbe essere utile nel debugging.<br />

Coman<strong>di</strong><br />

Comando che restituisce zero come exit status <strong>di</strong> una corretta esecuzione, ma nient’altro.<br />

216

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

Saved successfully!

Ooh no, something went wrong!