解析shell脚本中的参数

时间:2013-03-14 01:58:24

标签: shell

我有一个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

1 个答案:

答案 0 :(得分: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