Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Mac : Bash GetOpts有时被忽略

Mac : Bash GetOpts有时被忽略
EN

Stack Overflow用户
提问于 2018-02-28 17:17:32
回答 1查看 201关注 0票数 1

我在bash_profile中写了一个小的bash脚本。我想使用getopts来解析选项。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
deployMenu() {
  noInstallDependencies='false'
  build='true'
  echo "Args: $@"

  while getopts 'db' flag; do
    echo "flag ${flag}"
    case "${flag}" in
      d) noInstallDependencies='true' ;;
      b) build='false' ;;
      #*) echo "Unexpected option ${flag}" ;;
      #\?) echo "Unexpected option ${flag}" ;;
    esac
  done

  echo "noInstallDependencies $noInstallDependencies"
  echo "build $build"

如果我多次运行该命令,该参数将被忽略。我必须运行diff。标志,以便识别它。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
User:project User$ deployMenu -b
Args: -b
noInstallDependencies false
build true

User:project User$ deployMenu -b
Args: -b
noInstallDependencies false
build true

User:project User$ deployMenu --b -b
Args: --b -b
flag b
noInstallDependencies false
build false

User:project User$ deployMenu --b -b
Args: --b -b
noInstallDependencies false
build true

正如您所看到的,只有在将参数从-b更改为--<something> -b之后,才能识别该标志。我最初认为第一个参数被忽略了,但是运行两次--b -b也失败了。是否有需要先重置的缓存或其他内容?要让它工作,首先使用-b,然后切换到--b -b是可重复的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-02-28 17:39:30

由于您在同一shell实例中重复调用shell函数,因此不会在两次调用deployMenu之间重置$OPTIND的值。这会影响getopts在每次调用时将哪个选项视为“下一步”。尝试使用deployMenu ...; echo $OPTIND进行相同的实验。如果您计划多次调用deployMenu,那么解决方案可能就是显式地设置OPTIND=1

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
deployMenu() {
  noInstallDependencies='false'
  build='true'
  echo "Args: $@"
  OPTIND=1

  while getopts 'db' flag; do
   ...
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49035174

复制
相关文章
Mac开发跬步积累(三):被忽略的 NSTabViewController
Apple 官方描述 NSTabViewController作为一个容器业务控制器,可以管理多个页面,并且一次仅显示一个页面
代码行者
2018/10/10
2.5K0
Mac开发跬步积累(三):被忽略的 NSTabViewController
getopt getopts
optstring定义了命令行有效的选项字母,还定义了哪些选项字需要参数,需要参数的选项后面加:即可;
全栈程序员站长
2022/08/18
4570
被忽略的缓存 -bfcache
bfcache(Back-Forward Cache)是浏览器的一种机制,在 Safari 和 Chrome 中都得到了很好的支持 (笔者在测试最新的 Firefox 发现已经禁用了 bfcache),它利用内存缓存来存储用户访问过的页面状态。当用户在浏览器中执行后退或前进操作时,浏览器可以从 bfcache 中快速加载页面,而不是重新请求服务器并重新渲染页面。这意味着用户可以瞬间回到之前访问的页面,无需等待页面重新加载。它不是 HTTP 意义上的“缓存”,不是“磁盘缓存”意义上的“缓存”,而是将解码资源保存在内存中,以便在多个网页之间共享。
政采云前端团队
2023/10/24
9960
被忽略的缓存 -bfcache
原 Mac Bash 颜色配置
vim ~/.bash_profile 添加如下两行 export CLICOLOR = 1 export LSCOLOR = Gxfxaxdxcxegedabagacad 配置说明: CLICOLOR(Command Line Interface Color)是用来设置是否进行颜色的显示,CLI是的缩写。 LSCOLORS是用来设置当CLICOLOR被启用后,各种文件类型的颜色。 LSCOLORS的值中每两个字母为一组,分别设置某个文件类型的文字颜色和背景颜色。 LSCOLORS中一共11组颜色设置
霡霂
2018/06/04
8760
被忽略的console.log
除了console.log之外,还有更多方式调试JavaScript来输出值。 看起来很明显我们没有。
frontoldman
2019/09/03
8900
被忽略的console.log
被忽略的交互设计本质
谈论交互设计本质是起源于日常的很多谈论,不管是向朋友介绍自己从事“交互”相关岗位,还是需要向亲戚通过三言两语解释自己的工作内容;甚至在工作的上下游沟通中,也经常会被问道“你怎么就判断用户是这么想的”“产品如何从0(概念)到1(页面界面)的”;这些问题促使我想要追本溯源,捋顺一下交互的由来、工作内容,以及依照什么方法执行等问题。 01交互前言 现在谈论的“交互”是一个泊来词,本来的汉语语境中没有这个概念,或者说汉语语境中的概念并不是现在经常提到的用户体验设计中的这部分内容。这就导致很难解释,词语的界定模糊不
腾讯大讲堂
2018/02/13
1.5K0
被忽略的交互设计本质
在SourceTree取消被忽略的文件
老高刚才不小心在SourceTree中忽略了一个上级文件夹(一样的名字没看清,并且勾选了全局忽略),导致里面的所有文件都被忽略掉了,很是尴尬。。。
老高的技术博客
2022/12/28
1.8K0
在SourceTree取消被忽略的文件
【CSS系列】被忽略的content属性
版权声明:本文为原创文章首发于公众号:六小登登 , 你可以随意转载但请务必注明出处!!!关注微信公众号:六小登登,回复 「1024」领取资源大礼包 https://blog.csdn.net/qq_32135281/article/details/89667724
六小登登
2019/05/13
1.2K0
【CSS系列】被忽略的content属性
容易被忽略的5个HTML技巧
对于所有 Web 开发人员来说,无论你选择的是哪种框架或后端语言,都需要大量使用 HTML(超文本标记语言)。
深度学习与Python
2021/03/12
1.2K0
后台设计中容易被忽略的坑
1.数据关联性删除判断   示例:比如后台发布了一个待抢购的订单,app已经把此单抢购,因为后台没有及时刷新状态,所有如果要删除或下架此笔订单,必须先要验证此订单的状态是否为已经抢购; 2.数据重复录入问题   示例:新增数据的时候,由于网络卡顿原因,提交按钮我重复点击n次,就会发送n次请求,录入n条相同的数据,所有在第一次请求之前,先要把提交按钮设置不可编辑,等待返回结果之后再进行后续操作; 3.表单数据验证   表单验证的时候要验证数据库关键字符的处理,比如英文单引号(')就要做非法关键字提示; 4.千
磊哥
2018/05/08
1.2K0
容易被忽略的CSS安全性 [每日前端夜话(0x0B)]
前一段时间,有很多关于用CSS构建的“键盘记录器”的讨论(源代码见:https://github.com/maxchehab/CSS-Keylogging)。
疯狂的技术宅
2019/03/27
8860
容易被忽略的CSS安全性 [每日前端夜话(0x0B)]
26%的公司忽略安全漏洞,借口是没有时间去修复
上个月在RSA安全大会上收集的一项调查显示,尽管大多数公司都采取了合适的安全措施,但其中一些公司甚至故意忽视安全缺陷,其原因包括缺乏时间和缺乏专业技术等各种原因。
FB客服
2018/07/30
4910
26%的公司忽略安全漏洞,借口是没有时间去修复
原 GIT忽略已经被提交的文件
git update-index --assume-unchanged 的真正用法是这样的: 你正在修改一个巨大的文件,你先对其 git update-index --assume-unchanged,这样 Git 暂时不会理睬你对文件做的修改; 当你的工作告一段落决定可以提交的时候,重置改标识:git update-index --no-assume-unchanged,于是 Git 只需要做一次更新,这是完全可以接受的了; 提交+推送。 原解答来源:http://segmentfault.com/q/1
霡霂
2018/06/04
6840
被忽略的位运算符总结
曾经的我还是太年轻了, 基础不扎实还自以为是, 看到位运算符一节就以为是逻辑运算, 结果跳过没看了, 漏了很多知识. 果然 LeetCode 没白刷呀, 接下来是总结.
Ewdager
2020/07/14
6910
那些容易被忽略的Python编程方式
Python 之禅 The Zen of Python, by Tim Peters Beautiful is better than ugly. 优美胜于丑陋(Python以编写优美的代码为目标) Explicit is better than implicit. 明了胜于晦涩(优美的代码应当是明了的,命名规范,风格相似) Simple is better than complex. 简洁胜于复杂(优美的代码应当是简洁的,不要有复杂的内部实现) Complex is better than complic
CDA数据分析师
2018/02/05
9320
那些容易被忽略的Python编程方式
磁盘:最容易被忽略的性能洼地
在没有SSD硬盘之前,大家都会觉得我们的HDD硬盘很好用,什么5400转、7200转,广告都是棒棒的。直到有一天,SSD出现了,发现启动Windows的时候,居然可以秒开,这才幡然醒悟。因此,对于外行来说,磁盘I/O性能总是最容易被忽略的,精力会更集中在CPU上。但是对于内行人来说,大家都懂得,性能无非是CPU密集型和I/O密集型。磁盘I/O就是其中之一。那么到了移动时代,我们的存储芯片性能究竟怎样呢?在讨论这个问题之前,我们来看一个测试数据。
博文视点Broadview
2020/06/11
1.2K0
磁盘:最容易被忽略的性能洼地
Shell脚本中的while getopts用法小结
getpots是Shell命令行参数解析工具,旨在从Shell Script的命令行当中解析参数。getopts被Shell程序用来分析位置参数,option包含需要被识别的选项字符,如果这里的字符后面跟着一个冒号,表明该字符选项需要一个参数,其参数需要以空格分隔。冒号和问号不能被用作选项字符。getopts每次被调用时,它会将下一个选项字符放置到变量中,OPTARG则可以拿到参数值;如果option前面加冒号,则代表忽略错误;
洗尽了浮华
2019/10/30
9.2K0
游戏优化之音频压缩
其实这个比较容易忽略掉,但是音频资源如果不压缩的话,可能会造成游戏加载速度慢,尤其是对于一些音频资源依赖较高的游戏。
陨石坠灭
2018/10/19
1.4K0
游戏优化之音频压缩
差点被忽略的PHP命令行Commands
我们经常把php当作服务使用,常常忽略了php命令自身支持的一些功能,说不定其中的命令还可以提高我们的生产效率。比如查看ini信息,扩展信息等,我相信很多刚开始都会通过服务的形式查看这些信息,像页面输出phpinfo()之类的。
用户1093396
2020/10/29
5720
Shell中使用getopt、getopts命令
版权声明:本文为木偶人shaon原创文章,转载请注明原文地址,非常感谢。 https://blog.csdn.net/wh211212/article/details/53750366
shaonbean
2019/05/26
5.7K0

相似问题

如何让getopts忽略未指定的标志(bash)

10

getopts -忽略选项?

14

Bash getopts命令

22

bash getopts验证选项

11

BASH getopts可选参数

30
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文