kate.ward | 695ddde | 2008-06-26 22:22:26 +0000 | [diff] [blame] | 1 | #!/bin/sh |
kate.ward | 120b504 | 2008-06-27 08:58:03 +0000 | [diff] [blame] | 2 | # |
kate.ward | 120b504 | 2008-06-27 08:58:03 +0000 | [diff] [blame] | 3 | # This script does the very simple job of echoing some text. If a '-d' (or |
| 4 | # '--debug') flag is given, additinal "debug" output is enabled. |
| 5 | # |
| 6 | # This script demonstrates the use of a boolean flag to enable custom |
| 7 | # functionality in a script. |
kate.ward | c521068 | 2009-03-30 18:54:36 +0000 | [diff] [blame] | 8 | # |
| 9 | # Try running these: |
| 10 | # $ ./debug_output.sh speak |
| 11 | # $ ./debug_output.sh sing |
| 12 | # $ ./debug_output.sh --debug sing |
kate.ward | 695ddde | 2008-06-26 22:22:26 +0000 | [diff] [blame] | 13 | |
| 14 | # source shflags |
| 15 | . ../src/shflags |
| 16 | |
kate.ward | 695ddde | 2008-06-26 22:22:26 +0000 | [diff] [blame] | 17 | # define flags |
| 18 | DEFINE_boolean 'debug' false 'enable debug mode' 'd' |
kate.ward | c521068 | 2009-03-30 18:54:36 +0000 | [diff] [blame] | 19 | FLAGS_HELP=`cat <<EOF |
| 20 | commands: |
| 21 | speak: say something |
| 22 | sing: sing something |
| 23 | EOF` |
| 24 | |
| 25 | |
| 26 | debug() |
| 27 | { |
| 28 | [ ${FLAGS_debug} -eq ${FLAGS_TRUE} ] || return |
| 29 | echo "DEBUG: $@" >&2 |
| 30 | } |
| 31 | |
| 32 | die() { |
| 33 | [ $# -gt 0 ] && echo "error: $@" >&2 |
| 34 | flags_help |
| 35 | exit 1 |
| 36 | } |
| 37 | |
kate.ward | 695ddde | 2008-06-26 22:22:26 +0000 | [diff] [blame] | 38 | |
| 39 | # parse the command-line |
kate.ward | c521068 | 2009-03-30 18:54:36 +0000 | [diff] [blame] | 40 | FLAGS "$@" || exit 1 |
| 41 | eval set -- "${FLAGS_ARGV}" |
kate.ward | 695ddde | 2008-06-26 22:22:26 +0000 | [diff] [blame] | 42 | |
kate.ward | c521068 | 2009-03-30 18:54:36 +0000 | [diff] [blame] | 43 | command=$1 |
| 44 | case ${command} in |
| 45 | '') die ;; |
| 46 | |
| 47 | speak) |
| 48 | debug "I'm getting ready to say something..." |
| 49 | echo 'The answer to the question "What is the meaning of life?" is "42".' |
| 50 | ;; |
| 51 | |
| 52 | sing) |
| 53 | debug "I'm getting ready to sing something..." |
| 54 | echo 'I love to sing! La diddy da dum!' |
| 55 | ;; |
| 56 | |
| 57 | *) die "unrecognized command (${command})" ;; |
| 58 | esac |