击长选项/标志 - 怎么办呢? [英] Bash long options/flags - how to do it?

查看:178
本文介绍了击长选项/标志 - 怎么办呢?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想换一下工作脚本getopts的对getopt(长旗)。
下面我present我的code这是工作。

I am trying to change my working script with getopts to getopt ( long flags ). Below i present my code which is working.

getopts 'm:' mode
modeValue=$OPTARG

getopts 'p:' parameter
parameterValue=$OPTARG

getopts 'u:' parameter
parameterValue2=$OPTARG

getopts 'l:' parameter 
parameterValue3=$OPTARG

getopts 'n:' parameter 
parameterValue4=$OPTARG

getopts 'e:' parameter 
parameterValue5=$OPTARG

getopts 'w:' parameter 
parameterValue6=$OPTARG

getopts 'r:' parameter 
parameterValue7=$OPTARG

case $modeValue in
    addRepository)
          doAddRepository "$parameterValue" "$parameterValue7"
          exit $?
        ;;
    addProject)
          doAddProject "$parameterValue"
          exit $?
        ;;
    addUser)
          doAddUser "$parameterValue2" "$parameterValue4" "$parameterValue5" "$parameterValue6"
          exit $?
        ;;
    assignProject)
          doAssignProject "$parameterValue" "$parameterValue2" "$parameterValue3"
          exit $?
        ;;
    *)
          #echo "$doShowUsage"    
          exit 1
        ;;
esac

现在我的脚本工作就像下面的例子:

Now my script is working like example below:

For add repository: ./script.sh -m addRepository -p NameOfTheProject -r NameOfTheRepository

我想编辑本作是这样的:

I want to edit this for something like this:

./script.sh --mode addRepository --project NameOfTheProject --repo NameOfTheRepository

我开始修改code和补上一我下面present:

I started to modify code and added something what i present below:

 TEMP=`getopt -o m:p:u:l:n:e:c:r: --long mode:,project:,username:,level:,name:,email:,pass:,repo: -n 'test.sh'
    -- "$@"` eval set -- "$TEMP"

while true ; do
    case "$1" in
        -m|--mode)
            case "$2" in
                addRepository)
                        doAddRepository=$2 ; shift 2 ;;
                addProject)
                        doAddProject=$2 ; shift 2 ;;
                addUser)
                        doAddUser=$2 ; shift 2 ;;
                assignProject)
                        doAssignProject=$2 ; shift 2 ;;
                esac ;;
        -h|--help)
            case "$2" in
                *) echo "$doShowUsage"
                   exit 1
                esac ;;
        esac done

我的问题是:我这样做是正确的方式?我如何添加参数的功能doAddProject /存储库/用户...?有人可以给我一些建议?上述功能得到不同数额的参数,以便看看它。

My question is : Am I doing it in the right way ? How can I add parameters to the functions "doAddProject/Repository/User...?" Can someone give me some advices? Above functions got different amount of parameters so take a look at it.

感谢您!

推荐答案

斯特凡Chazelas写的很细的 getops长的shell脚本的,我在我的庆典使用调试器。您可以复制该脚本并使用它。

Stephane Chazelas wrote a very fine getops-long shell script that I use in my bash debugger. You can copy that script and use it.

如果您运行的程序设置变量 test_getopts_long ,例如

If you run that program setting variable test_getopts_long, e.g.

test_getopts_long=1 bash getopts_long.sh

您将看到如何使用大量的例子,它测试本身。

you'll see extensive examples for how to use, and it tests itself.

这篇关于击长选项/标志 - 怎么办呢?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆