Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/bash
- getopt --test > /dev/null
- if [[ $? -ne 4 ]]; then
- echo "I’m sorry, `getopt --test` failed in this environment."
- exit 1
- fi
- OPTIONS=dfo:v
- LONGOPTIONS=debug,force,output:,verbose
- # -temporarily store output to be able to check for errors
- # -e.g. use “--options” parameter by name to activate quoting/enhanced mode
- # -pass arguments only via -- "$@" to separate them correctly
- PARSED=$(getopt --options=$OPTIONS --longoptions=$LONGOPTIONS --name "$0" -- "$@")
- if [[ $? -ne 0 ]]; then
- # e.g. $? == 1
- # then getopt has complained about wrong arguments to stdout
- exit 2
- fi
- # read getopt’s output this way to handle the quoting right:
- eval set -- "$PARSED"
- # now enjoy the options in order and nicely split until we see --
- while true; do
- case "$1" in
- -d|--debug)
- d=y
- shift
- ;;
- -f|--force)
- f=y
- shift
- ;;
- -v|--verbose)
- v=y
- shift
- ;;
- -o|--output)
- outFile="$2"
- shift 2
- ;;
- --)
- shift
- break
- ;;
- *)
- echo "Programming error"
- exit 3
- ;;
- esac
- done
- # handle non-option arguments
- if [[ $# -ne 1 ]]; then
- echo "$0: A single input file is required."
- exit 4
- fi
- echo "verbose: $v, force: $f, debug: $d, in: $1, out: $outFile"
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement