Capitolo 30. Opzioni

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.
      

Nota

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

AbbreviazioneNomeEffetto
-CnoclobberEvita 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
-aallexportEsporta tutte le variabili definite
-bnotifyNotifica la terminazione dei job in esecuzione in background (non molto utile in uno script)
-c ...(nessuno)Legge i comandi da ...
-eerrexitLo 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)
-fnoglobDisabilita l'espansione dei nomi dei file (globbing)
-iinteractiveLo script viene eseguito in modalità interattiva
-nnoexecLegge i comandi dello script, ma non li esegue (controllo di sintassi)
-o Nome-Opzione(nessuno)Invoca l'opzione Nome-Opzione
-o posixPOSIXModifica il comportamento di Bash, o dello script da eseguire, per conformarlo allo standard POSIX .
-o pipefailpipe failureFa in modo che una pipe restituisca l'exit status dell'ultimo comando che ha restituito un valore di ritorno diverso da zero.
-pprivilegedLo script viene eseguito con il bit "suid" impostato (attenzione!)
-rrestrictedLo script viene eseguito in modalità ristretta (vedi Capitolo 21).
-sstdinLegge i comandi dallo stdin
-t(nessuno)Esce dopo il primo comando
-unounsetIl tentativo di usare una variabile non definita provoca un messaggio d'errore e l'uscita forzata dallo script
-vverboseVisualizza ogni comando allo stdout prima della sua esecuzione
-xxtraceSimile 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.