Information
We are currently investigating an issue with the editor of some pages. Please save your work and avoid to create new pages until this banner is gone.
How do I write a command help in Shell script (bash)?
Mainly the strategy is:
1. Create a printUsage function. 2. Use getopt to verify the parameters that need arguments. 3. With getopt switch the list of parameter.
Here is a brief example:
############--1--################## function printUsage { echo "One line description of the command" echo "" echo "Usage: `basename $0` [ANY_MANDATORY_ARGUMENTS] [OPTIONS] " echo "Options: " echo " -o | -option OPT_ARGUMENT description of the option and its argument" echo " -a | -another description of the option" echo " -h | -help prints this help and exits" } ############--2--################## export POSIXLY_CORRECT=1 #this are the options, when the options need an argument, the : is placed next to the option $LONGOPTS=option:,another,help $SHORTOPTS=o:ah getopt -n `basename $0` -Q -u -a -l $LONGOPTS $SHORTOPTS "$@" || { printUsage exit 1; } ############--3--################## set -- `getopt -u -a -l $LONGOPTS $SHORTOPTS "$@"` while : do case "$1" in --option) CL_OPTION=$2 ; shift ;; -o) CL_OPTION=$2 ; shift ;; --another) CL_ANOTHER=true ;; --a) CL_ANOTHER=true ;; --help) CL_HELP=true ;; -h) CL_HELP=true ;; --) break ;; esac shift done shift # # (Note: Rest of command line now in $@ ) # # restore export POSIXLY_CORRECT= unset POSIXLY_CORRECT if [ "$CL_HELP" ] ; then printUsage exit 1 fi ##############################
Things to consider when using 'getopt':
* If the script needs an argument of the form: "a string with spaces", getopt interpret the argument as "a", discarding the rest of the string. For that kind of cases, is useful to use getopts, although the use is diferent from the example above. Also, getopts doesn't accept option like words, just letters.
-- CarlitaParedes - 27 Jun 2006