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