Linux 中的 getopts 命令示例
getopts是一个非常方便的 bash 脚本实用程序,它可以帮助您以干净、标准化的方式方便、优雅地处理标志(简短版本)和参数的传递。与让开发人员手动处理传递给脚本的标志不同,这提供了一种在迭代 while 循环时处理此问题的简便方法。
先决条件:建议对以下主题有基本的了解:
- bash脚本的基本理解。
- bash 中的标志。
- bash 中的参数。
句法:
getopts optstring name [arg]
通过终端获取语法:
getopts
使用 getopts 命令
1.打印帮助部分:输入以下命令打印getopts命令的帮助部分。
getopts --help
上面的命令将打印命令的详细信息以及可用于运行命令的一些参数和选项。
2. 在脚本中的使用: getopts 也可以在 Linux 的脚本中使用。以下脚本描述了相同的情况。
#!/bin/bash
while getopts ":a:bc:" flag;do
echo "flag -$flag, Argument $OPTARG";
done
该脚本运行一个 while 循环,它遍历与给定 optstring 匹配的参数,在本例中为“a:bc:”,并将标志的值存储在变量flag 中。如果标志有任何关联的参数,则将其存储在变量OPTARG 中。
optstring 的工作方式如下:
- 对于每个选项字母,getopts 将选项存储在变量标志中(在 optstring 之后声明),并迭代循环。
- 每个选项字母后跟一个冒号都需要一个参数,该参数存储在变量OPTARG 中。
- 如果 getopts 期待一个参数,但无法解析一个,它会打印一个错误。如果它不期望, OPTARG将被初始化为“”(一个空字符串)。
- 如果 optstring 的第一个字符是“:”(冒号),则不会打印错误消息
3. 通过按预期传递参数来运行脚本。
./getoptsDemo.sh -a argA -b
注意: -b 的OPTARG是空的,而不是它以前的值,因为它在每次迭代时都被初始化。此外,-c 未通过,这不是问题,因为 optstring 中的每个标志都是可选的。
4. 通过跳过需要的标志参数来运行脚本:这会打印一条错误消息。标志初始化为“?”,OPTARG 为“.
./getoptsDemo.sh -a
5. 通过添加 optstring 中不存在的标志来运行脚本:这会打印一条错误消息。同样,标志被初始化为“?”, OPTARG是“”。
./getoptsDemo.sh -d
如果第一个字符是“:”,则 getopts 进入静默模式,不打印错误消息,并且在某些情况下行为会发生变化。考虑以下示例的 optstring“:a”-
6.在需要的地方跳过标志的参数:标志被初始化为“:”,并且OPTARG被设置为选项字符。
./getoptsDemo.sh -a