3 581
contributi
(aggiunto debug integrato) |
|||
Riga 317: | Riga 317: | ||
Rinomina tutti i file <code>*.txt</code> della directory corrente in <code>*.log</code>: | Rinomina tutti i file <code>*.txt</code> della directory corrente in <code>*.log</code>: | ||
$ for f in *.txt; do mv "$f" "${f/%txt/log}"; done | $ for f in *.txt; do mv -- "$f" "${f/%txt/log}"; done | ||
L'opzione "--" dopo il comando esterno <code>mv</code> serve per comunicargli che le stringhe che seguono non sono opzioni, nemmeno se iniziassero con il carattere "-". È sempre buona norma utilizzarla con comandi che manipolano i file, quali <code>rm</code>, <code>cp</code>, <code>mv</code>, ecc... | |||
=== Debug integrato === | |||
'''Bash''', proprio come '''dash''', ha delle opzioni che ne consentono il debug. | |||
Per iniziare invocando uno script con <code>-n</code> è possibile effettuare un primitivo controllo di sintassi. Si noti che possibili comandi inesistenti non vengono controllati e nemmeno le espansioni (di variabili, percorsi, ecc...), ma può essere utile per verificare che tutti i blocchi sono stati chiusi correttamente prima di eseguire lo script: | |||
$ bash -n script.sh | |||
Dopo questo primo controllo ci sono altre opzioni utili, che possono essere impiegate anche congiuntamente nell'esecuzione dello script: | |||
* <code>-x</code> invia sull'output per gli errori ogni comando prima di eseguirlo, preceduto da un prompt "+ "; | |||
* <code>-v</code> invia sull'output per gli errori l'intero blocco di codice che è stato letto (solo la prima volta); | |||
* <code>-u</code> interrompe l'esecuzione dello script se si accede a una variabile che non è mai stata assegnata, può essere utile in caso di errori di battitura; | |||
* <code>-e</code> interrompe lo script in caso un comando ritorni un errore, se il suo valore di ritorno non è controllato da un <code>if</code>, <code>while</code>, <code>until</code> o dalla concatenazione di comandi con <code>||</code>. | |||
Le opzioni possono essere anche accorpate: | |||
$ bash -evx script.sh | |||
L'opzione <code>-e</code> può essere utilizzata anche fuori dal debug, ma è consigliabile non fare affidamento sulla sua presenza nella prima riga dello script (<code>#! /bin/bash -e</code>), visto che può essere ignorata semplicemente invocando la shell con lo script come argomento oppure importando il contenuto dello script. I valori di ritorno di ogni comando che può fallire vanno invece controllati nel codice. | |||
==Il file .bashrc== | ==Il file .bashrc== | ||
Riga 429: | Riga 447: | ||
|Verificata_da= | |Verificata_da= | ||
:[[Utente:S3v|S3v]] | :[[Utente:S3v|S3v]] | ||
:[[Utente:HAL 9000|HAL 9000]] | :[[Utente:HAL 9000|HAL 9000]] 14:34, 25 giu 2014 (CEST) | ||
|Estesa_da= | |Estesa_da= | ||
:[[Utente:S3v|S3v]] | :[[Utente:S3v|S3v]] | ||
:[[Utente:HAL 9000|HAL 9000]] | |||
|Numero_revisori=2 | |Numero_revisori=2 | ||
}} | }} | ||
[[Categoria:Bash]] | [[Categoria:Bash]] |
contributi