这是 getoptsposix 命令,可以使用我们的多个免费在线工作站之一在 OnWorks 免费托管服务提供商中运行,例如 Ubuntu Online、Fedora Online、Windows 在线模拟器或 MAC OS 在线模拟器
程序:
您的姓名
getopts — 解析实用程序选项
概要
获取选项 选择字符串 姓名 [ARG...]
商品描述
获取选项 实用程序应从参数列表中检索选项和选项参数。
它应支持基础语法中描述的实用程序语法指南 3 到 10,包括端点
POSIX.1-2008 的定义卷, 部分 12.2, 公用事业 句法 指南.
每次调用时, 获取选项 实用程序应将下一个选项的值放在
由指定的 shell 变量 姓名 操作数和下一个参数的索引
在 shell 变量中处理 选择. 每当 shell 被调用时, 选择 应该
初始化为 1。
当该选项需要一个选项 - 参数时, 获取选项 实用程序应将其放在
外壳变量 OPTARG. 如果没有找到选项,或者如果找到的选项没有
有一个选项参数, OPTARG 将被取消设置。
如果选项字符未包含在 选择字符串 在选项中找到操作数
字符是预期的,由指定的 shell 变量 姓名 应设置为
标记> ('?) 特点。 在这种情况下,如果第一个字符 选择字符串 是一个
(':'),外壳变量 OPTARG 应设置为找到的选项字符,但没有输出
应写入标准错误; 否则,shell变量 OPTARG 将被取消设置
并且诊断消息应写入标准错误。 该条件应为
被认为是在向调用方提供参数的方式中检测到的错误
应用程序,但不应是错误 获取选项 处理。
如果缺少选项参数:
* 如果第一个字符 选择字符串 是一个, 由指定的 shell 变量 姓名
应设置为字符和shell变量 OPTARG 应设置为
找到的选项字符。
* 否则,指定的shell变量 姓名 应设置为
字符,shell 变量 OPTARG 应取消设置,并应为诊断消息
写入标准错误。 这种情况应被视为检测到错误
以向调用应用程序提交参数的方式,但不应是
错误中 获取选项 加工; 诊断消息应按规定写入,但
退出状态应为零。
当遇到选项结束时, 获取选项 实用程序应以返回值退出
大于零; 外壳变量 选择 应设置为第一个的索引
操作数或值 “ $#”+1 如果没有操作数; 这 姓名 变量应设置为
这特点。 以下任何一项都应确定选项的结束:
第一 “--” 不是选项参数的参数,找到一个不是选项的参数
option-argument 并且不以 a 开头 '-',或遇到错误。
外壳变量 选择 和 OPTARG 应该是本地的调用者 获取选项 并应
默认不导出。
指定的 shell 变量 姓名 操作数, 选择及 OPTARG 将影响
当前的shell执行环境; 看 部分 2.12, 壳 执行 环境.
如果应用程序设置 选择 对于值 1,可以使用一组新参数:
当前位置参数或新的 ARG 值。 任何其他尝试调用 获取选项
在带有参数的单个 shell 执行环境中多次(位置
参数或 ARG 操作数)在所有调用中都不同,或者具有 选择
value 修改为 1 以外的值,会产生未指定的结果。
配置
没有。
操作数
应支持以下操作数:
选择字符串 包含由实用程序调用识别的选项字符的字符串
获取选项. 如果一个字符后跟一个,该选项应该是预期的
有一个参数,它应该作为一个单独的参数提供。
应用程序应将选项字符及其选项参数指定为
单独的论点,但 获取选项 应解释以下字符
选项字符需要参数作为参数,无论是否完成。
一个显式的 null option-argument 如果没有作为
一个单独的论点,当 获取选项 被调用。 (另见 获取选择() 功能
在 POSIX.1-2008 的系统接口卷中定义。)字符
和不得用作选项字符
应用。 使用非字母数字的其他选项字符
产生未指定的结果。 如果选项参数不是作为
将参数与选项字符分开,中的值 OPTARG 应该
去除了选项字符和 '-'. 中的第一个字符 选择字符串
确定如何 获取选项 如果选项字符未知或选项-
缺少参数。
姓名 由 shell 变量设置的名称 获取选项 效用
找到的选项字符。
获取选项 实用程序默认应解析传递给调用的位置参数
壳程序。 如果 ARGs 给出,它们将被解析而不是位置
参数。
标准输入
不曾用过。
INPUT FILES
没有。
环境 变数
以下环境变量会影响执行 获取选项:
朗 为未设置或未设置的国际化变量提供默认值
空值。 (参见 POSIX.1-2008 的基本定义卷, 部分 8.2,
国际化 变量 为国际化优先
用于确定语言环境类别值的变量。)
LC_ALL 如果设置为非空字符串值,则覆盖所有其他字符串的值
国际化变量。
LC_CTYPE 确定用于解释文本数据字节序列的语言环境
作为字符(例如,单字节而不是多字节字符
参数和输入文件)。
LC_消息
确定应该用于影响格式和内容的语言环境
写入标准错误的诊断消息。
路径 确定用于处理的消息目录的位置 LC_消息.
选择 该变量应由 获取选项 效用作为下一个索引
要处理的参数。
异步 新闻
默认。
标准输出
不曾用过。
斯特德
每当检测到错误并且出现第一个字符时 选择字符串 操作数不是
(':'),应将诊断消息写入标准错误,如下所示
未指定格式的信息:
* 调用程序名称应在消息中标识。 调用程序
name 应为 shell 特殊参数 0 的值(请参阅 部分 2.5.2, Special
参数) 当时 获取选项 实用程序被调用。 相当于:
基本名 “ $ 0”
可能用过了。
* 如果发现一个选项没有被指定 选择字符串,这个错误被识别
无效的选项字符应在消息中标识。
* 如果找到需要选项参数的选项,但没有找到选项参数
发现,这个错误应该被识别并且无效的选项字符应该是
消息中标识。
OUTPUT FILES
没有。
EXTENDED 商品描述
没有。
退出 状态
应返回以下退出值:
0 一个选项,由指定或未指定 选择字符串, 被找到。
>0 遇到选项结束或发生错误。
后果 OF 错误
默认。
以下 部分 ,那恭喜你, 内容丰富。
申请须知 用法
自 获取选项 影响当前shell执行环境,一般提供为
一个 shell 常规内置。 如果在子shell中调用或单独的实用程序执行
环境,例如以下之一:
(getopts ABC 折扣值 "$@")
诺哈普 获取选项 ...
发现 . -执行 获取选项 ... \;
它不会影响调用者环境中的 shell 变量。
请注意,shell 函数共享 选择 与调用外壳,即使位置
参数改变。 如果调用 shell 及其任何函数使用 获取选项 至
解析参数,结果未指定。
示例
以下示例脚本解析并显示其参数:
标志=
标志=
而 获取选项 来自: 姓名
do
案件 $名称 in
a) 标志=1;;
b) 标志=1
bval="$OPTARG";;
?) 的printf “用法: %s: [-a] [-b 价值] 参数\n" $0
出口 2 ;;
ESAC
完成
if [ ! -z “$aflag” ]; 然后
的printf “选项 -a 指定\n"
fi
if [ ! -z “$bflag” ]; 然后
的printf '选项 -b “%s” 指定\n' “$bval”
fi
转移 $(($选择 - 1))
的printf “其余的 参数 是: %s\n$*"
基本原理
获取选项 实用程序优先于 System V 获取选择 效用,因为
获取选项 处理包含的选项参数人物。
OPTARG 环境变量部分中没有提到变量,因为它确实
不影响执行 获取选项; 它是少数使用的“仅输出”变量之一
通过标准实用程序。
这不允许作为选项字符,因为这不是历史行为,
它违反了实用程序语法指南。 这现在被指定为
在 KornShell 版本中 获取选项 公用事业; 当用作第一个字符时
选择字符串 操作数,它禁用有关缺少选项参数的诊断和
意外的选项字符。 这取代了使用 奥普特 变量是
在早期提案中指定。
生成的诊断消息的格式 获取选项 效用和 获取选择()
功能未完全指定,因为实现具有高级(“更友好”)
格式反对某些历史实现使用的格式。 标准
开发人员认为使用的消息中的信息统一很重要
之间 获取选项 和 获取选择(). 可能无法完全复制消息,
特别是如果一个实用程序是建立在另一个具有不同 获取选择()
功能,但消息必须包含特定信息,以便程序
用户可以区分名称、无效选项字符和错误类型。
只有罕见的应用程序拦截了 获取选项 标准错误消息并希望
解析它。 因此,实现可以自由选择最有用的消息
设计。 许多历史实现使用以下格式:
"%s: 非法 选项 -- %c\n", <程序 姓名>, <选项 字符>
"%s: 选项需要一个参数 -- %c\n",程序 姓名>、\
<选项 字符>
具有内置版本的历史外壳 获取选择() 要么 获取选项 用过不同的
格式,通常甚至不指示在错误中发现的选项字符。
未来 如何前往
没有。
使用 onworks.net 服务在线使用 getoptsposix