bash命令详解(Linux中bash详解)

给你的 shell 脚本添加选项。

bash命令详解(简单阐述bash命令的用法)

终端命令通常具有 选项或开关,用户可以使用它们来修改命令的执行方式。关于命令行界面的POSIX 规范中就对选项做出了规范,这也是最早的 UNIX 应用程序建立的一个由来已久的惯例,因此你在创建自己的命令时,最好知道如何将选项包含进Bash 脚本中。

与大多数语言一样,有若干种方法可以解决 Bash 中解析选项的问题。但直到今天,我最喜欢的方法仍然是我从 Patrick Volkerding 的 Slackware 构建脚本中学到的方法,当我第一次发现 Linux 并敢于冒险探索操作系统所附带的纯文本文件时,这些脚本就是我的 shell 脚本的引路人。

Bash 中的选项解析

在 Bash 中解析选项的策略是循环遍历所有传递给 shell 脚本的参数,确定它们是否是一个选项,然后转向下一个参数。重复这个过程,直到没有选项为止。

#!/bin/bashwhile [ True ]; doif [ "$1" = "–alpha" -o "$1" = "-a" ]; then    ALPHA=1    shift 1else    breakfidoneecho $ALPHA

在这段代码中,我创建了一个while循环,它会一直进行循环操作,直到处理完所有参数。if语句会试着将在第一个位置($1)中找到的参数与–alpha或-a匹配。(此处的待匹配项是任意选项名称,并没有特殊意义。在实际的脚本中,你可以使用–verbose和-v来触发详细输出)。

shift关键字会使所有参数位移一位,这样位置 2($2)的参数移动到位置 1($1)。处理完所有参数后会触发else语句,进而中断while循环。

在脚本的末尾,$ALPHA的值会输出到终端。

测试一下这个脚本:

$ bash ./test.sh –alpha1$ bash ./test.sh$ bash ./test.sh -a1

可以看到,选项被正确地检测到了。

在 Bash 中检测参数

但上面的脚本还有一个问题:多余的参数被忽略了。

$ bash ./test.sh –alpha foo1$

要想捕获非选项名的参数,可以将剩余的参数转储到 Bash 数组中。

#!/bin/bashwhile [ True ]; doif [ "$1" = "–alpha" -o "$1" = "-a" ]; then    ALPHA=1    shift 1else    breakfidoneecho $ALPHAARG=( "${@}" )for i in ${ARG[@]}; do    echo $idone

测试一下新版的脚本:

$ bash ./test.sh –alpha foo1foo$ bash ./test.sh foofoo$ bash ./test.sh –alpha foo bar1foobar

带参选项

有一些选项需要传入参数。比如,你可能希望允许用户设置诸如颜色或图形分辨率之类的属性,或者将应用程序指向自定义配置文件。

要在 Bash 中实现这一点,你仍然可以像使用布尔开关一样使用shift关键字,但参数需要位移两位而不是一位。

#!/bin/bashwhile [ True ]; doif [ "$1" = "–alpha" -o "$1" = "-a" ]; then    ALPHA=1    shift 1elif [ "$1" = "–config" -o "$1" = "-c" ]; then    CONFIG=$2    shift 2else    breakfidoneecho $ALPHAecho $CONFIGARG=( "${@}" )for i in ${ARG[@]}; do    echo $idone

在这段代码中,我添加了一个elif子句来将每个参数与–config和-c进行比较。如果匹配,名为CONFIG的变量的值就设置为下一个参数的值(这就表示–config选项需要一个参数)。所有参数都位移两位:其中一位是跳过–config或-c,另一位是跳过其参数。与上节一样,循环重复直到没有匹配的参数。

下面是新版脚本的测试:

$ bash ./test.sh –config my.conf foo barmy.conffoobar$ bash ./test.sh -a –config my.conf baz1my.confbaz

Bash 让选项解析变得简单

还有一些其他方法也可以解析 Bash 中的选项。你可以替换使用case语句或getopt命令。无论使用什么方法,给你的用户提供选项都是应用程序的重要功能,而 Bash 让解析选项成为了一件简单的事。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

(0)

相关推荐

  • 怎么用ps修改图片尺寸大小和像素(怎么调整)

    生活中像照片,特别是证件照,经常会看见有关像素尺寸大小的要求。 自己在家怎么调整呢?用一部手机或者电脑就能搞定啦! 直接上干货啦~ 一·调整KB: 1·所需工具: 电脑端Photo…

    2023年10月13日
  • 2023年电脑配置推荐(自选电脑配置网站)

    现在是着手改造后的第16篇,大幅修改。本次改动主要是调整文章布局,将游戏用途和生产力用途的配置单往前移,这样可以让这些用户群体多的配置单被更多关注到,并且部分配置单升级了板U甚至是…

    2023年12月4日
  • 剪辑视频怎么剪辑

    学会这五个基本操作,轻松剪视频。 学会这五个基本操作,你也可以轻松剪出一条完整的 vlog。视频保姆级教程来了! ·首先我们打开剪映,开始创作,把拍好的视频按顺序添加进来。 ·第一…

    2024年1月22日
  • 搜狐号自媒体怎么赚钱

    做自媒体大家应该都是想要利用平台来获得更多的收益,那在搜狐号中如何操作才能获得更多的收益呢? 搜狐自媒体平台最大的特点就是发布的内容均被列入新闻源,对于推广产品非常重要,并且搜狐自…

    2024年1月4日
  • 剪映视频旋转90度怎么调整

    1.首先,在手机上下载安装好剪映APP,点击打开。 2.然后点击“开始创作”。 3.选择你要编辑的视频,点击“添加到项目” 4.进入视频编辑页面,点击左下角的剪辑。 5.拉动屏幕下…

    2024年1月23日
  • ae脚本目录在哪找(ae字体特效)

    AE脚本有一段时间没有更新了,今天就带来新一期,900多个高科技全息信息图HUD交互设计元素动画。 在前面分享了不少脚本,或多或少也有使用吧,看看这些效果,也都是脚本预设合成。 这…

    2023年12月4日
  • 自媒体内容质量度(内容质量5个等级)

    花了很大精力,以为这次的作品肯定不错。当数据出来后,却很失望; 有的创作者对平台产生怀疑,觉得平台的流量机制不公平; 更有人慢慢地褪去了热情,放弃了自媒体。 其实,自媒体是公平的。…

    2023年9月14日
  • 怎样删除pdf文件中的一页内容(删除PDF页面的方法)

    PDF文件是一种非常流行的文档格式,但有时候我们可能想要删除其中的某一页。比如我们可能需要将PDF文件缩减到更小的大小,或者想要删除某些附加页面以使文件更易于阅读。另外,如果咱们和…

    2023年10月11日
  • cad如何输入文字和编辑文字大小(怎样在cad图中添加文字)

    先上问题: 和CAD打交道的用户都知道,因为要适配图纸,修改图形线宽和文字大小是经常需要处理的工作,那今天就来和大家分享一下: 浩辰CAD看图王APP和电脑版如何快速修改文字大小与…

    2023年12月7日
  • 网络自媒体将来的趋势

    在信息时代,自媒体作为一种新型的信息传递媒介,其发展空间和前景众说纷纭,有观点认为目前的自媒体市场已经接近饱和,也有观点认为自媒体仍有很大空间,认为目前的自媒体市场已经趋于饱和,那…

    2024年1月3日