首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在bourne shell中使用user-defined-function中的getopts

在bourne shell中,getopts是一个内置命令,用于解析命令行参数。它可以处理单字符选项和长选项,并且可以在shell脚本中使用。

getopts的基本语法如下:

代码语言:txt
复制
getopts optstring name

其中,optstring是一个包含所有可能选项的字符串,每个选项后面可以跟一个冒号(:)表示该选项需要参数。name是一个变量名,用于存储当前处理的选项。

在使用getopts时,需要在脚本中使用一个while循环来处理所有选项,例如:

代码语言:txt
复制
while getopts ":a:b:c" opt; do
  case $opt in
    a)
      echo "Option a with value $OPTARG"
      ;;
    b)
      echo "Option b with value $OPTARG"
      ;;
    c)
      echo "Option c"
      ;;
    \?)
      echo "Invalid option: -$OPTARG" >&2
      exit 1
      ;;
    :)
      echo "Option -$OPTARG requires an argument" >&2
      exit 1
      ;;
  esac
done

在上面的例子中,getopts处理三个选项a、b和c,其中a和b需要参数,c不需要参数。如果选项后面跟着一个冒号,则表示该选项需要参数,例如选项a和b。在处理选项时,使用case语句来判断当前处理的选项,并执行相应的操作。如果选项后面没有参数,则使用$OPTARG变量来获取参数。如果选项后面需要参数,但是没有提供参数,则会报错,并且脚本会退出。

需要注意的是,getopts只能处理单字符选项,不能处理长选项。如果需要处理长选项,可以使用其他命令行解析工具,例如getopt。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

shell脚本】$ shell脚本使用

shell脚本 '$' 与不同符号搭配其表示意义也会不同 特殊标志符 含义 $0 当前脚本文件名 $n 传递给脚本或函数参数。n 是一个数字,表示第几个参数。...例如,第一个参数是$1,第二个参数是$2 $# 传递给脚本或函数参数个数 $* 传递给脚本或函数所有参数 $@ 传递给脚本或函数所有参数 $?...上个命令退出状态 $$ 当前Shell进程ID $() 与 `(反引号) 一样用来命令替换使用 ${} 引用变量划分出边界 注释:$* 和 $@ 都表示传递给函数或脚本所有参数,不被双引号(" "...)包含时,都以"$1" "$2" … "$n" 形式输出所有参数。...但是当它们被双引号(" ")包含时,"$*" 会将所有的参数作为一个整体,以"$1 $2 … $n"形式输出所有参数;"$@" 会将各个参数分开,以"$1" "$2" … "$n" 形式输出所有参数

6.2K20
  • Shell-aliasShell脚本使用

    概述 shell开启alias 实际操作 概述 众所周知,shell脚本使用是非交互式方式,非交互式模式下alias扩展功能默认是关闭,此时虽然可以定义alias别名,但是shell不会将alias...别名扩展成对应命令,而是将alias别名本身当作命令执行,如果shell内置命令和PATH均没有与alias别名同名命令,则shell会找不到指定命令。...---- shell开启alias 使用shell内置命令shopt命令来开启alias扩展选项。...默认是打开非交互式模式下是关闭,但可以用可shopt来将其开启 shopt -s expand_aliases ---- 实际操作 我们项目中某个模块双机启动脚本(root用户下操作),...其中应用启停使用了alias建立同义词来操作,如果想要在脚本中使用,必须开启同义词才。

    2.3K10

    Linux Shell编程零基础入门

    本文中,我们关注重点是Bash,也就是Bourne Again Shell,由于易用和免费,Bash日常工作中被广泛使用;同时,Bash也是大多数Linux系统默认Shell。...在一般情况下,人们并不区分 Bourne ShellBourne Again Shell,所以,在下面的文字,我们可以看到#!/bin/sh,它同样也可以改为#!/bin/bash。...Shell脚本可以使用所有的Linux命令,利用上面的cat和exit,从一方面来说,熟练使用Linux命令也可以大大减少Shell脚本长度。...exit 1;; esac done 上面的getopts类似于C语言提供函数getoptsShell Scriptgetopts经常和while语句联合起来使用。...getopts语法如下: getopts option_string variable option_string包含一串单字符选项,若getopts命令行参数 发现了连字符,那么它会将连字符之后字符与

    1.2K10

    Linux Shell编程入门

    本文中,我们关注重点是Bash,也就是Bourne Again Shell,由于易用和免费,Bash日常工作中被广泛使用;同时,Bash也是大多数Linux系统默认Shell。...在一般情况下,人们并不区分 Bourne ShellBourne Again Shell,所以,在下面的文字,我们可以看到#!/bin/sh,它同样也可以改为#!/bin/bash。...Shell脚本可以使用所有的Linux命令,利用上面的cat和exit,从一方面来说,熟练使用Linux命令也可以大大减少Shell脚本长度。...exit 1;; esac done 上面的getopts类似于C语言提供函数getoptsShell Scriptgetopts经常和while语句联合起来使用。...getopts语法如下: getopts option_string variable option_string包含一串单字符选项,若getopts命令行参数 发现了连字符,那么它会将连字符之后字符与

    3.8K20

    如何使用notiontermNotion页面嵌入反向Shell

    关于notionterm  notionterm是一款功能强大反向Shell嵌入工具,该工具帮助下,广大研究人员可以轻松向一个Notion页面嵌入反向Shell。  ...工具特性  1、可以反向Shell隐藏我们IP地址(研究人员和目标计算机之间没有进行直接交互,Notion将作为代理来托管反向Shell); 2、支持报告插入演示和PoC; 3、高可用性和可共享反向...Shell(桌面、浏览器、手机); 4、支持加密Shell和带有身份验证功能远程Shell;  工具要求  Notion软件和API密钥; 允许目标设备通过HTTP通信连接与Notion域名交互; 目标设备上能够实现远程代码执行...出于安全因素考虑,大家请不要随意分享代码,并且使用后记得删除。...url=[NOTION_PAGE_ID] 轻量级模式 该模式下,工具只会从目标设备向Notion页面发送HTTP流量: notionterm light [flags]  工具使用演示  演示视频:

    1.2K10

    说说Shell代码重构应用

    ,所以今天我要说说Shell代码重构应用。...先来个简单,假设我们要把PHP文件foo_bar全都替换成fooBar,那么可以如下: 方法一,使用Sed: shell> find /path -name "*.php" -print0 | xargs...> 动手前,我们需要先摸摸底,了解一下大概情况: shell> grep -I -ri includeClass /path | more 其中,grep命令参数乍一看不好记,不过只要按照我说方法记...另外程序是通过生成一个唯一临时文件来完成保存。...提醒:直接覆盖原始文件有时候并不合适,毕竟可能有没考虑周详地方,使用SVN的话就不会有这样顾虑了,因为即便覆盖了原始文件,也可以提交前通过“svn diff”命令来检查对错,就算是提交了,也可以恢复到以前版本

    62940

    Linux Shell编程入门

    本文中,我们关注重点是Bash,也就是Bourne Again Shell,由于易用和免费,Bash日常工作中被广泛使用;同时,Bash也是大多数Linux系统默认Shell。...在一般情况下,人们并不区分 Bourne ShellBourne Again Shell,所以,在下面的文字,我们可以看到#!/bin/sh,它同样也可以改为#!/bin/bash。...Shell脚本可以使用所有的Linux命令,利用上面的cat和exit,从一方面来说,熟练使用Linux命令也可以大大减少Shell脚本长度。...exit 1;; esac done 上面的getopts类似于C语言提供函数getoptsShell Scriptgetopts经常和while语句联合起来使用。...getopts语法如下: getopts option_string variable option_string包含一串单字符选项,若getopts命令行参数 发现了连字符,那么它会将连字符之后字符与

    1.4K20

    shell交互read命令使用

    Shell脚本,read命令用于从标准输入读取用户输入数据,并将其保存到指定变量。这使得我们可以编写交互式Shell脚本,与用户进行交互,根据用户输入执行不同操作。...该示例,我们使用read命令读取用户输入名字,并将其保存到变量name。然后,我们使用echo命令输出Hello, $name!,其中$name会被替换为用户输入名字。示例2:指定提示符#!...该示例,我们使用read命令读取用户输入名字,并使用-p选项指定了提示符"What's your name? "。然后,我们使用echo命令输出Hello, $name!.../bin/bashread -s -p "Enter your password: " passwordecho -e "\nYour password is $password"该示例,我们使用read...fi该示例,我们使用read命令读取用户输入名字,并使用-t选项指定了超时时间为5秒。如果用户5秒内输入了名字,则输出Hello, $name!

    87610

    Shell 参数扩展及各类括号 Shell 编程应用

    及其右边字符串:/dir1/dir2/dir3/my Tips: 记忆方法为: # 是去掉左边(键盘上 # $ 之左边) % 是去掉右边(键盘上 % $ 之右边) 单一符号是最小匹配...Bash4可以使用两种容器。...关联数组可以使用MAP=([x]=a [y]=b)进行多项赋值,注意这是赋值语句而不是声明。 亲测数组索引不一定要按顺序来,你可以先给2和3上元素赋值。...echo ${HI^,^} # HellO 看来是不行×_× 2、各类括号 shell/bash 编程应用 上面应该见识到了 shell 中大括号强大功能,其实 shell 下有很多种括号,不像其它高级语言括号只起到语法和意义作用...2.1 () shell运行 (a=1);echo $a,结果是空,因为a=1不是在当前shell运行(a=1);(echo $a)也是空

    1.6K70

    python脚本执行shell命令方法

    python脚本执行shell命令方法 最近在写python一些脚本,之前使用python都是django中使用,可能大部分内容都是偏向于后端开发方面的,最近在写一些脚本时候,发现了...使用Python处理一个shell命令或者一个执行一个shell脚本,一般情况下,有下面三种方法,下面我们来看: 第一种方法是使用os.system方法 os.system("cmd") 我们在当前目录下面创建一个...aaa.sql文件,文件内容是aaa,然后我们来看测试过程 1[root@ /data ]$python 2Python 2.7.15 (default, Nov 29 2018, 13:37...shell命令打印出来aaa.sql内容,然后下面出现数字0代表上述命令执行成功;如果我们打印bbb.sql则返回值是256,表示执行中出现了问题。...第三种方法是使用popen函数 os.popen() 返回是 file read 对象,对其进行读取 read() 操作可以看到执行输出 1[root@ /data]$python 2Python

    5.3K00

    Bash shell ,select 使用举例

    文章目录 Bash shell ,select 使用举例 一 背景 二 使用举例 2.1 单独使用...select 2.2 结合 case 使用 三 总结 Bash shell ,select 使用举例 一 背景 最近运维工作,写了很多脚本,写这些脚本时发现了一些高效用法,现将 select...脚本增加了一个判断,如果选择主机不在指定范围,那么结束本次执行。 2.2 结合 case 使用 #!...很多场景,结合 case 语句使用显得更加方便。上面的脚本,重新定义了 PS3 值,默认情况下 PS3 值是:"#?"。...三 总结 3.1 select 看起来似乎不起眼,但是交互式场景却非常有用,各种用法希望大家多多总结。 3.2 文章还涉及到了 bash shell 判断值是否在数组用法。

    83230
    领券