shell脚本中getopts的用法
getopts是一个用于解析命令行选项和参数的Bash内置函数。它通常与while循环结合使用,用于迭代处理命令行选项。
getopts的用法如下:
while getopts "options" opt; do
case $opt in
option1)
# 处理选项1
;;
option2)
# 处理选项2
;;
option3)
# 处理选项3
;;
*)
# 处理无效选项
;;
esac
done在上面的示例中,options是一个包含所有选项的字符串。每个选项都可以带有一个冒号(:),表示该选项可以接受一个参数。
在while循环中,getopts会从命令行参数中一次获取一个选项,并将其存储在变量opt中。case语句根据获取到的选项进行匹配,从而执行相应的逻辑。
在case语句中,option1、option2和option3是选项的名称,可以根据实际需要进行修改。在每个选项的逻辑处理部分,您可以编写相应的代码来处理该选项的功能。
如果命令行中使用了无效的选项,则会执行*)分支中的代码,用于处理无效选项的情况。
getopts还有其他一些功能,比如可以使用OPTARG变量获取选项的参数值,以及使用OPTIND变量获取下一个选项的索引位置。您可以使用man getopts命令在终端中查看更详细的文档。
下面是一个具体的示例,演示了如何使用getopts在脚本中处理命令行选项和参数:
#!/bin/bash
while getopts "a:b:c:" opt; do
case $opt in
a)
echo "Option -a is enabled"
echo "Value of -a: $OPTARG"
;;
b)
echo "Option -b is enabled"
echo "Value of -b: $OPTARG"
;;
c)
echo "Option -c is enabled"
echo "Value of -c: $OPTARG"
;;
*)
echo "Invalid option: -$opt"
exit 1
;;
esac
done
shift $((OPTIND-1))
# 处理剩余的参数
for arg in "$@"; do
echo "Extra Argument: $arg"
done在上述示例中,假设脚本的名称为script.sh。您可以通过以下命令行传递选项和参数来运行脚本:
./script.sh -a value1 -b value2 -c value3 extra1 extra2脚本将根据命令行选项和参数执行相应的逻辑。-a、-b和-c是各自的选项,并且可以带有一个对应的参数值。剩余的参数extra1和extra2由$@获取,并在最后的循环中输出。
实际使用的时候还会接受后面参数的值,或者不接受参数的值,只作为使用判断
#!bin/bash
while getopts "a:b:iop" option;do
case $option in
a) echo "$OPTARG";;
b) echo "$OPTARG";;
i) echo "ii";;
o) echo "oo $OPTARG";; #不会有输出的 $OPTARG 内容,只做处理一次,比如赋值,而不获取输入参数
?) echo "$OPTARG";;
esac
done如果还有其他后缀参数怎么办?
#!bin/bash
while getopts "a:b:iop" option;do
case $option in
a) echo "$OPTARG";;
b) echo "$OPTARG";;
i) echo "ii";;
o) echo "oo $OPTARG";;
?) echo "$OPTARG";;
esac
done
#通过shift $(($OPTIND - 1))的处理,$*中就只保留了除去选项内容的参数,
#可以在后面的shell程序中进行处理
shift $(($OPTIND - 1))
echo remaining parameters=[$*]
echo \$1=[$1]
echo \$2=[$2]
版权属于:戏人看戏博客网
本文链接:https://blog.web3er.cn/archives/1331.html
若无注明均为戏人看戏原创,转载请注明出处,感谢您的支持!
暂无标签