到目前为止,我已编辑了我的脚本,但它无法正常工作。
首先,我将展示此代码:
while true ; do
case "$1" in
--mode)
MODE=$2
shift 2;
;;
-l|--login)
LOGIN=$2
shift 2;
;;
-e|--email)
EMAIL=$2
shift 2;
;;
-r|--repo)
REPO=$2
shift 2;
;;
-p|--project)
PROJ="$2"
shift 2;
;;
-h|--help)
echo "$doShowUsage"
exit 1
esac
break
done
if [ "$MODE" == "doAddRepository" ]; then
echo " CREATING REPOS!!!"
doAddRepository "$PROJ" "$REPO"
fi
if [ "$MODE" == "doAddProject" ]; then
doAddProject "$PROJ"
fi
正如你在cli中写道时所见:
./script.sh --mode doAddProject -p test
当我更改代码时,它将无法工作:
if [ "$MODE" == "doAddProject" ]; then
doAddProject "$2"
fi
然后它的作品!我的问题是如何连接我的功能?我在下面的两个函数中提出。
doAddRepository{
local projectName=$1
local repoName=$2
...
}
doAddProject{
local projectName=$1
...
}
TEMP=`getopt -o m:p:r:h --long mode:,project:,repo:,help -n 'script.sh' -- "$@"`
eval set -- "$TEMP"
答案 0 :(得分:1)
由于break
语句不合适,您的循环只迭代一次。只有在参数为空时才应该打破循环。
while true ; do
case "$1" in
--mode)
MODE=$2
shift 2;
;;
-l|--login)
LOGIN=$2
shift 2;
;;
-e|--email)
EMAIL=$2
shift 2;
;;
-r|--repo)
REPO=$2
shift 2;
;;
-p|--project)
PROJ="$2"
shift 2;
;;
-h|--help)
echo "$doShowUsage"
exit 1
;;
'')
break
;;
esac
done