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 回答