getopts是一个在 Shell 脚本中用于解析命令行选项的内置命令。
它用于处理脚本的参数,使得脚本可以接受不同的选项和参数,并根据用户提供的输入采取相应的操作。
getopts
命令基于 POSIX 标准,并且通常与 while
循环结合使用。它的语法如下:
while getopts "" opt; do
case $opt in
)
# 处理 option1 的操作
;;
)
# 处理 option2 的操作
;;
?)
# 处理无效选项的操作或错误提示
echo "Invalid option: -$OPTARG"
;;
esac
done
其中,为该脚本程序接受的参数列表,每个参数用一个字母表示;getopts会随着while循环挨个遍历参数列表,opt为匹配到的参数字符,OPTARG为当前匹配到的参数值,如果有的话。
比非所有参数都有值,可以在配置参数列表时用冒号:标记改参数是否有值,例如:
#!/bin/bash
# file_name: my_script.sh
while getopts ":a:b:cde:fgh" opt
do
case $opt in
a)
echo "Option -a is set with value $OPTARG"
;;
b)
echo "Option -b is set with value $OPTARG"
;;
c)
echo "Option -c is set"
;;
d)
echo "Option -d is set"
;;
e)
echo "Option -e is set with value $OPTARG"
;;
f)
echo "Option -f is set"
;;
g)
echo "Option -g is set"
;;
服务器托管网 h)
echo "Option -h is set"
;;
?)
echo "Invalid option: -$OPTARG"
;;
esac
done
./my_script.sh -a apple -b36 -c -d -e ays -ghf -xyz
#>Option -a is set with value apple
#>Option -b is set with value 36
#>Option -c is set
#>Option -d is set
#>Option -e is set with value ays
#>Option -g is set
#>Option -h is set
#>Option -f is set
#>Invalid option: -x
#>Invalid option: -y
#>Invalid option: -z
总结一下,getopts从第一个脚本命令行参数开始,假如是以-开头,则识别为是传参,取-后面的一个字母做为传参名,然后到getopts配置的参数列表中检查该传参是否有值。
如果该传参有配置值,取该命令行参数剩余部分为参数值,如果剩余部分为空字符串,则取下一个命令行参数做为参数值(不管下一个命令行参数是否以-开头);
如果该传参没有配置值,且当前命令行参数还有其他字符,则取下一个字符做为传参,继续判断;
如果该传参没有配置值,且当前命令行参数没有其他字符,则取下一个命令行参数,继续判断;
如果遇到一个命令行参数不是以-开头,或所有命令行参数遍历结束,getopts返回False,while循环结束;
列表最前面一个:冒号可以适配未知传参,也可以理解为是无名传参,进而将其后面的字符串做为传参的值,然后进入case ?)分支。
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net
相关推荐: Mac 上 CLion 搭建 QT6.6 开发环境
QT6.6 是一款功能强大的集成开发环境(IDE),用于C和C++的开发。在本文中,我们将讨论如何在Mac上安装CLion。安装CLion非常简单,只需遵循以下步骤即可: 下载CLion:访问JetBrains官方网站,下载适用于Mac的CLion安装包。确保…