nacho4d
nacho4d

Reputation: 45158

parsing parameters in shell script

I have a myscript.sh which starts like this:

#!/usr/bin/env bash
set -e

usage(){
  echo "Show Usage ... Blah blah"
  exit 1
}

if [ $# = 0 ]; then
  usage;
fi

while true; do
  case "$1" in
    -l | --build-lib ) BUILD_LIB=true; 
    --other-option ) OTHER_OPTION=$2; shift; shift;;
    -h | --help ) usage; shift;;
    * ) break ;;
  esac
done

# I do my thing here ....
echo "Do my thing"

I am not sure if this is the best way to parse the parameters but so far I have a problem. I am not correctly breaking/failing when the user passes wrong or unknown parameters. How can I address this correctly?

for example I want to avoid calls like:

$ ./myscript.sh unknownParameter

Upvotes: 1

Views: 471

Answers (1)

Barmar
Barmar

Reputation: 782624

You need to exit when an incorrect option is given, not just break out of the loop. Easiest way is to call your usage function.

while [ $# -gt 0 ]; do
  case "$1" in
    -l | --build-lib ) BUILD_LIB=tru ;;
    --xcode-dev-path ) XCODE_DEV_PATH=${2%/}; shift ;;
    -h | --help ) usage;;
    * ) usage ;;
  esac
  shift
done

Upvotes: 3

Related Questions