| Advanced Bash-Scripting HOWTO: A guide to shell scripting, using Bash | ||
|---|---|---|
| Prev | Chapter 3. Tutorial / Reference | Next | 
Options are settings that change shell and/or script behavior.
The set command (see Section 3.9) enables options within a script. At the point in the script where you want the options to take effect, use set -o option-name or, in short form, set -option-abbrev. These two forms are equivalent.
|       #!/bin/bash
      set -o verbose
      # Echoes all commands before executing.
       | 
|       #!/bin/bash
      set -v
      # Exact same effect as above.
       | 
Note: To disable an option within a script, use set +o option-name or set +option-abbrev.
|       #!/bin/bash
      set -o verbose
      # Command echoing on.
      command
      ...
      command
      set +o verbose
      # Command echoing off.
      command
      # Not echoed.
      set -v
      # Command echoing on.
      command
      ...
      command
      set +v
      # Command echoing off.
      command
      exit 0
       | 
An alternate method of enabling script options is to invoke the script with the option(s) from the command line. Some options are available only this way. Among these are -i, force script to run interactive, and -r, restricted.
|       bash -v script-name
               or
      bash -o verbose script-name
       | 
The following is a listing of some useful options. They may be specified in either abbreviated form or by complete name.
Table 3-1. bash options
| Abbreviation | Name | Effect | 
|---|---|---|
| -C | noclobber | Prevent overwriting of files by redirection (may be overridden by >|) | 
| -a | allexport | Export all defined variables | 
| -b | notify | Notify when jobs running in background terminate (not of much use in a script) | 
| -f | noglob | Filename expansion disabled | 
| -p | privileged | Script runs as "suid" (caution!) | 
| -u | nounset | Attempt to use undefined variable outputs error message | 
| -v | verbose | Print each command to stdout before executing it | 
| -x | xtrace | Similar to -v, but expands commands | 
| -e | errexit | Abort script at first error (when a command exits with non-zero status) | 
| -n | noexec | Read commands in script, but do not execute them | 
| -t | (none) | Exit after first command | 
| - | (none) | End of options flag. All other arguments are positional parameters. | 
| -- | (none) | Unset positional parameters. If arguments given (--arg1arg2), positional parameters set to arguments. |