Guida avanzata di scripting Bash: Un'approfondita esplorazione dell'arte dello scripting di shell | ||
---|---|---|
Indietro | Avanti |
Le opzioni sono impostazioni che modificano il comportamento della shell e/o dello script.
Il comando set abilita le opzioni in uno script. Nel punto dello script da cui si vuole che le opzioni abbiano effetto, si inserisce set -o nome-opzione oppure, in forma abbreviata, set -abbrev-opzione. Le due forme si equivalgono.
#!/bin/bash set -o verbose # Visualizza tutti i comandi prima della loro esecuzione. |
#!/bin/bash set -v # Identico effetto del precedente. |
Per disabilitare un'opzione in uno script, si usa set +o nome-opzione o set +abbrev-opzione. |
#!/bin/bash set -o verbose # Abilitata la visualizzazione dei comandi. comando ... comando set +o verbose # Visualizzazione dei comandi disabilitata. comando # Non visualizzato. set -v # Visualizzazione dei comandi abilitata. comando ... comando set +v # Visualizzazione dei comandi disabilitata. comando exit 0 |
Un metodo alternativo per abilitare le opzioni in uno script consiste nello specificarle immediatamente dopo l'intestazione #!.
#!/bin/bash -x # # Corpo dello script. |
È anche possibile abilitare le opzioni per uno script da riga di comando. Alcune di queste, che non si riesce ad impostare con set, vengono rese disponibili per questa via. Tra di esse -i, che forza l'esecuzione interattiva dello script.
bash -v nome-script
bash -o verbose nome-script
Quello che segue è un elenco di alcune delle
opzioni più utili. Possono essere specificate sia in
forma abbreviata (precedute da un trattino singolo) che con il loro nome
completo (precedute da un doppio trattino o da -o
).
Tabella 30-1. Opzioni bash
Abbreviazione | Nome | Effetto |
---|---|---|
-C | noclobber | Evita la sovrascrittura dei file a seguito di una redirezione (può essere annullato con >|) |
-D | (nessuno) | Elenca le stringhe tra doppi apici precedute da $, ma non esegue i comandi nello script |
-a | allexport | Esporta tutte le variabili definite |
-b | notify | Notifica la terminazione dei job in esecuzione in background (non molto utile in uno script) |
-c ... | (nessuno) | Legge i comandi da ... |
-e | errexit | Lo script abortisce al primo errore, quando un comando termina con un exit status diverso da zero (ad eccezione dei cicli until o while, verifiche if, costrutti lista) |
-f | noglob | Disabilita l'espansione dei nomi dei file (globbing) |
-i | interactive | Lo script viene eseguito in modalità interattiva |
-n | noexec | Legge i comandi dello script, ma non li esegue (controllo di sintassi) |
-o Nome-Opzione | (nessuno) | Invoca l'opzione Nome-Opzione |
-o posix | POSIX | Modifica il comportamento di Bash, o dello script da eseguire, per conformarlo allo standard POSIX . |
-o pipefail | pipe failure | Fa in modo che una pipe restituisca l'exit status dell'ultimo comando che ha restituito un valore di ritorno diverso da zero. |
-p | privileged | Lo script viene eseguito con il bit "suid" impostato (attenzione!) |
-r | restricted | Lo script viene eseguito in modalità ristretta (vedi Capitolo 21). |
-s | stdin | Legge i comandi dallo stdin |
-t | (nessuno) | Esce dopo il primo comando |
-u | nounset | Il tentativo di usare una variabile non definita provoca un messaggio d'errore e l'uscita forzata dallo script |
-v | verbose | Visualizza ogni comando allo stdout prima della sua esecuzione |
-x | xtrace | Simile a -v , ma espande i
comandi |
- | (nessuno) | Indicatore di fine delle opzioni. Tutti gli altri argomenti sono considerati parametri posizionali. |
-- | (nessuno) | Annulla i parametri posizionali.
Se vengono forniti gli argomenti (-- arg1 arg2 ),
i parametri posizionali vengono impostati agli argomenti. |