问题标签 [getopts]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
28266 浏览

bash - Using getopts inside a Bash function

I'd like to use getopts inside a function that I have defined in my .bash_profile. The idea is I'd like to pass in some flags to this function to alter its behavior.

Here's the code:

When I invoke it like this:

I get this output:

What's wrong? I'd like to get the value bc without manually shifting and parsing. How do I use getopts correctly inside a function?

EDIT: corrected my code snippet to try $OPTARG, to no avail

EDIT #2: OK turns out the code is fine, my shell was somehow messed up. Opening a new window solved it. The arg value was indeed in $OPTARG.

0 投票
3 回答
10357 浏览

linux - BASH getopts 可选参数

我正在尝试创建一个 shell 脚本,它有两个强制参数(arg1、arg2),然后是一个可选的 -b 标志以及用户选择使用该标志时需要遵循的参数。

让我解释:

这是一个安装脚本,它利用 GIT 从 Github 存储库中获取应用程序。用户在终端 f.ex. 中键入:

并且脚本从此存储库中获取主分支的一个实例。然而,用户是否应该选择使用可选的 -b 标志,这意味着他/她想要指定要获取的分支,例如开发分支。这意味着用户可以执行以下操作:

我也很好奇如何让脚本工作,这样用户在“new”参数和“app_name”参数之前输入 -b flag+branch_name 就无关紧要了。但这也许不是目前最重要的事情。

要知道我到底要构建什么,这里有一个指向我当前脚本的链接,它只接受两个强制参数并且只获取主分支:My Super Cool Artisan Executable Script

PS:我一直在尝试使用 getopts 的许多示例,我在 Stackoverflow 和其他博客上都找到了这些示例,但没有一个可以帮助我完全使其工作。因此,我在这里向你们所有伟大的人寻求帮助。

非常感谢,请务必查看我的Linux Mint / Ubuntu - Post Install Script for only cool people(你们和那些从 Windows/Mac 切换到 Linux 的人)

问候, 维利

0 投票
2 回答
2128 浏览

bash - getopts 无法识别问号

我目前正在这样的脚本中解析选项:

每个解析选项和标志都有效 - 除了这个:? ). 因此,如果我用类似的东西调用我的脚本,./MyScript hjrfgdskjgh它会正确通过循环——尽管它应该在最后一行用? ).
我还尝试从":ia"或使用\?或删除引号. )- 没有任何效果!我做错了什么??

0 投票
1 回答
119 浏览

bash - make getopts error when optionstring does not start with a dash

我正在编写一个脚本,该脚本将 getopts 用于需要参数和一些不需要参数的选项。如果任何开关不以“-​​”开头,我希望 getopts 退出并出现错误,而不是简单地停止解析选项并继续。因此,如果这是我的 getopts 行:

我这样称呼脚本:

脚本在“我”处停止解析,其余开关被忽略。我希望它在到达“我”时出错,因为它不是以“-”开头的。我怎么做?

0 投票
1 回答
360 浏览

bash - 有人可以用简单的英语解释这个简短的 getopts bash 脚本吗?(UNIX)

这是脚本:

所以我真正理解的唯一部分是 shift $(($OPTIND-1))。有人可以解释其余的实际在做什么吗?上面是什么意思file=$1?这是否意味着现在将“文件”一词分配给$1列的值?

通过“$1 列”,我指的是这样一个事实,即在运行命令时,$0分配给命令的实际名称,$1是给出的第二个选项/参数,并且$2是给出的第三个选项/参数。例如,如果您键入:

然后$0是 rm。-r将是$1。并且directory/randomfiles会是$2。那有意义吗?

总结一下:

  1. file=$1顶部是什么意思,有什么意义?
  2. 代表什么$opt,它是什么意思?
  3. 这是什么iopt=1意思,它有什么意义?
  4. 如果我想像这样使用我的脚本: MyScriptName -r [InsertFilenameHere]我该怎么做?

我知道我在问很多问题-如果您能回答我的一些问题,或者指出我正确的方向,我将不胜感激!

提前致谢。

0 投票
1 回答
235 浏览

bash - getopts 没有解析我的命令行选项

我正在运行 bash 4.2 版,并且正在尝试使用内置命令解析命令行参数getopts

但是getopts似乎没有正确解析它,如果-s不是第一个参数,它不会被解析

-s未解析:

这个得到了解析

脚本在这里:

0 投票
4 回答
382 浏览

bash - 用作 wc 命令的 Bash 脚本

我正在尝试使用getopts它来创建一个脚本,它可以作为wc. 问题是当我同时使用两个开关时会卡住。剧本:

当我用它运行这个脚本时,./script.sh -l file它可以工作,但是当我使用./script -wl file它时,它就会进入一个无限循环。谁能解释发生了什么以及如何解决它?

0 投票
1 回答
1603 浏览

linux - bash getopts 无法识别参数

我们有一个getopts脚本来检索如下参数

我们收到一个在另一个脚本中解析并传递给getopts脚本的参数,它适用于单个条目,例如12345,-d somedesc -l somelabel

但是,我们收到多个条目,例如12345,-d somedesc -l somelabel:6789, -d anotherdesc -l anotherlabel,并且正在使用loopawk进一步拆分参数,在这种情况下,getopts即使正确传递了 OPTIONS,也不会触发。

有什么原因getopts无法识别 OPTIONS 吗?

0 投票
1 回答
91 浏览

bash - 一起使用 getopts 和 ${1}

我正在尝试编写一个可以同时使用 ${1} 和 getopts 选项的脚本。我希望它使用使用行工作:

打印:

我试过了

这无法让我同时访问 ${1} 并检测到 -a 选项被同时使用。有没有办法同时使用这两种方法?我想避免将测试字符串变成另一个 getopts 选项。

0 投票
3 回答
511 浏览

bash - 使用值列表解析标志

我正在创建一个涉及解析参数的 bash 脚本。用法是:

使用getopts我能够解析-a-b获取它们各自的值ARG_1ARG_2. 当且仅当用户将-c其作为最后一个参数时,我还能够获取-c并创建一个包含所有值的列表LIST_OF_ARGS...

但我不想强迫用户-c作为最后一个标志插入。例如,如果可以以这种方式调用脚本,那就太好了:

这是我当前的代码: