我有一个带有几个参数的函数。例如:
makeUser{
login
email
password}
我想做出这样的标志-l|--login
,-e|--email
而-p|--password
但我不知道怎么办。
它的示例应类似于以下代码:
./script.sh --mode makeUser --login test --email [email protected] -p testxx
我怎样才能达到那个结果?我只知道如何用getopts(短标志)来做到这一点。
它应该看起来像下面的代码吗?
while true ; do
case "$1" in
-m|--mode)
makeUser)
case "$2" in
-l|--login)
makeUser "$OPTARG"
case "$3" in
-e|--email)
makeUser "$OPTARG"
case "$4" in
-p|--password)
makeUser "$OPTARG"
exit $?
esac ;;
exit $?
esac ;;
exit $?
esac ;;
makeProject)...
makeSite)...
exit $?
esac ;;
done
使用while
并shift
使得在bash中getopt的酷似行为干净的解决方案:
while [ $# -gt 0 ]; do
case "$1" in
-h|"-?"|--help)
shift
echo "usage: $0 [-v] [--mode MODE] [-l login] [-e email] [...]"
exit 0
;;
--mode)
MODE=$2
shift; shift;
;;
-l|--login)
LOGIN=$2
shift; shift;
;;
-e|--email)
EMAIL=$2
shift; shift;
;;
-v|--verbose)
VERBOSE=1
shift;
;;
*)
echo "Error: unknown option '$1'"
exit 1
esac
done
# example function makeUser
makeUser()
{
login=$1
email=$2
echo "function makeUser with login=${login} and email=${email}"
}
if [ "$MODE" == "makeUser" ]; then
makeUser $LOGIN $EMAIL # ... and so on
fi
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句