368
Comment:
|
1343
|
Deletions are marked like this. | Additions are marked like this. |
Line 2: | Line 2: |
== How do I process options in a bash script? == For example, how do I code my bash script to accept a bunch of options like |
== Common utility functions (warn, die) == (If you were looking for option processing, see [[BashFAQ/035]].) The following functions are frequently asked for in #bash, so we hope you find them useful. |
Line 7: | Line 6: |
foobar -a --busy --include something | ## # warn: Print a message to stderr. # Usage: warn "format" ["arguments"...] # warn() { local fmt="$1" shift printf "script_name: $fmt\n" "$@" >&2 } ### ### The following three "die" functions ### depend on the above "warn" function. ### ## # die (simple version): Print a message to stderr # and exit with the exit status of the most recent # command. # Usage: some_command || die "message" ["arguments"...] # die () { local st="$?" warn "$@" exit "$st" } ## # die (explicit status version): Print a message to # stderr and exit with the exit status given. # Usage: if blah; then die status_code "message" ["arguments"...]; fi # die() { local st="$1" shift warn "$@" exit "$st" } ## # die (optional status version): Print a message to # stderr and exit with either the given status or # that of the most recent command. # Usage: some_command || die [status code] "message" ["arguments"...] # die() { local st="$?" if [[ "$1" != *[^0-9]* ]]; then st="$1" shift fi warn "$@" exit "$st" } |
Line 9: | Line 61: |
First up, there are some [[http://www.gnu.org/software/libtool/manual/libc/Argument-Syntax.html][GNU and POSIX standards]] for how to do this. |
Common utility functions (warn, die)
(If you were looking for option processing, see BashFAQ/035.) The following functions are frequently asked for in #bash, so we hope you find them useful.
## # warn: Print a message to stderr. # Usage: warn "format" ["arguments"...] # warn() { local fmt="$1" shift printf "script_name: $fmt\n" "$@" >&2 } ### ### The following three "die" functions ### depend on the above "warn" function. ### ## # die (simple version): Print a message to stderr # and exit with the exit status of the most recent # command. # Usage: some_command || die "message" ["arguments"...] # die () { local st="$?" warn "$@" exit "$st" } ## # die (explicit status version): Print a message to # stderr and exit with the exit status given. # Usage: if blah; then die status_code "message" ["arguments"...]; fi # die() { local st="$1" shift warn "$@" exit "$st" } ## # die (optional status version): Print a message to # stderr and exit with either the given status or # that of the most recent command. # Usage: some_command || die [status code] "message" ["arguments"...] # die() { local st="$?" if [[ "$1" != *[^0-9]* ]]; then st="$1" shift fi warn "$@" exit "$st" }