1

次のように始まる myscript.sh があります。

#!/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"

これがパラメーターを解析する最良の方法であるかどうかはわかりませんが、これまでのところ問題があります。ユーザーが間違ったパラメーターまたは不明なパラメーターを渡すと、正しく壊れたり失敗したりしません。どうすればこれに正しく対処できますか?

たとえば、次のような呼び出しを避けたい:

$ ./myscript.sh unknownParameter
4

1 に答える 1

3

ループから抜け出すだけでなく、間違ったオプションが与えられたときに終了する必要があります。最も簡単な方法は、関数を呼び出すusageことです。

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
于 2013-03-14T02:00:26.440 に答える