#!/bin/sh # # This script does the very simple job of echoing some text. If a '-d' (or # '--debug') flag is given, additinal "debug" output is enabled. # # This script demonstrates the use of a boolean flag to enable custom # functionality in a script. # # Try running these: # $ ./debug_output.sh speak # $ ./debug_output.sh sing # $ ./debug_output.sh --debug sing # source shflags . ../src/shflags # define flags DEFINE_boolean 'debug' false 'enable debug mode' 'd' FLAGS_HELP=`cat <<EOF commands: speak: say something sing: sing something EOF` debug() { [ ${FLAGS_debug} -eq ${FLAGS_TRUE} ] || return echo "DEBUG: $@" >&2 } die() { [ $# -gt 0 ] && echo "error: $@" >&2 flags_help exit 1 } # parse the command-line FLAGS "$@" || exit 1 eval set -- "${FLAGS_ARGV}" command=$1 case ${command} in '') die ;; speak) debug "I'm getting ready to say something..." echo 'The answer to the question "What is the meaning of life?" is "42".' ;; sing) debug "I'm getting ready to sing something..." echo 'I love to sing! La diddy da dum!' ;; *) die "unrecognized command (${command})" ;; esac