shell getopts
用getopts命令获取到脚本选项后,getopts会将获取到的选项所对应的参数(选项对应的参数,并不是选项本身,有的命令选项后面是需要跟一个参数的,例如tcpdump 的-w选项,后面需要指定一个文件来保存抓包数据)自动保存到OPTARG这个变量中。
getopts命令格式:getopts OPTSTRING VARNAME
OPTSTRING:告诉getopts会有哪些选项和参数(用选项后面加“:”来表示选项后面需要加参数)
VARNAME:保存getopts获取到的选项
#!/bin/env sh
function Usage(){
echo -e "\e[1;31;47mUsage: $0 [-a] [-b <arg>] [-c]\e[0m"
return 0
}
while getopts :ab:c opt
do
case "$opt" in
a)
echo "Found -$opt option!"
;;
b)
echo "Found -$opt option!,with parameter value $OPTARG!"
;;
c)
echo "Found -$opt option!"
;;
:) # 没有选项参数时,opt置为 : ,OPTARG变成选项
echo "Option -$OPTARG need parameter!"
Usage
;;
?) # 没有该选项是,opt置为 ? ,OPTARG变成选项
echo "Option -$OPTARG invalid"
Usage
;;
*)
echo "Unknow option: -$OPTARG"
;;
esac
done
echo $*
#!/bin/env sh
status=off
filename=''
output=''
function usage(){
echo -e "\e[1;31;47mUsage: $0 [-h] [-v] [-f <filename>] [-o <filename>]\e[0m"
# exit -1
}
while getopts ':hvf:o:' var
do
case $var in
h)
echo $var
usage
exit -1
;;
v)
echo $var
status=on
echo $status
# exit -1
;;
f)
echo $var
echo $OPTARG
filename=$OPTARG
if [ ! -f $filename ];then
echo "the source file $filename not exists nor $filename is not regular file!"
# exit -1
fi
;;
o)
echo $var
echo $OPTARG
output=$OPTARG
if [ ! -d $output ];then
echo "the output path $output not exists!"
# exit -1
fi
;;
:)
echo $var
echo "the option -$OPTARG require an arguement"
usage
# exit 2
;;
?)
echo $var
echo "Invaild option: -$OPTAGR"
usage
# exit 2
;;
*)
echo default
usage
# exit 3
;;
esac
done
echo after circulation
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律