[shell] getopts使用
来源:互联网 发布:hadoop和云计算知乎 编辑:程序博客网 时间:2024/05/22 01:33
# Usage: ./getopts.sh -d 3 -f file a b c d
# $0 :命令本身,相当于C/C++中的argv[0]
# $1 :第一个参数.$2,$3,... :类推。
# $# 参数的个数,不包括命令本身
# $@ :参数本身的列表,不包括命令
# $* :和$@相同,但"$*"将所有的参数解释成一个字符串,而"$@"是一个参数数组。
# OPTARG存储相应选项的参数 OPTIND指向的是下一个参数的index
# shift 会改变参数的顺序,通过左移去掉某些参数
# getopts 检测到非法参数就会停止
# 当optstring以":"开头时,getopts会区分invalid option错误和miss option argument。
# invalid option错误时,varname会被设成?
# miss option argument时,varname会被设成:
# 选项参数识别完成之后,对剩余的其它命令行参数,可以使用shift把选项参数抹去,对整个参数列表进行左移操作,
# 位移的长度是case循环完毕之后的OPTIND - 1,因为参数从1开始编号,选项处理完毕之后,指向剩余其它参数的第一个。
# unset OPTIND 可以解决shell脚本的函数中使用getopts
# 对于.bashrc之类,可用local OPTIND
usage()
{
echo -e "Usage: `basename $0` [-d DIGIT] [-f FILE]\n\
-d Specify which distro these apps are built against\n\
-f Input file which contains the applications' dependences"
exit 1
}
if [[ $# -lt 1 ]];then
usage
fi
while getopts ":Dd:f:" arg
do
case $arg in
D)
echo "D"
;;
d)
echo "d" $OPTIND "$OPTARG"
if [[ ${OPTARG:0:1} = "-" ]]; then
echo "$OPTARG is invalid arg for $arg"
exit 1
fi
;;
f)
echo "f" $OPTIND "$OPTARG"
if [[ ${OPTARG:0:1} = "-" ]]; then
echo "$OPTARG is invalid arg for $arg"
exit 1
fi
;;
\?) echo "Invalid option"
usage
exit 1
;;
:) echo "Must supply an argument to -$OPTARG."
exit 1
;;
esac
done
echo 处理完参数后的 OPTIND:$OPTIND
echo $0
echo $1
echo $*
shift $(($OPTIND - 1))
echo 左移之后参数索引位置:$OPTIND
echo $0
echo $1
echo $*
echo "Other Params: $@"
- [shell] getopts使用
- shell getopts使用
- shell getopts
- shell-----getopts
- shell--getopts
- 使用getopts处理Shell脚本参数
- 使用getopts处理shell中的输入参数
- 使用getopts处理Shell脚本参数 (转)
- 使用getopts处理shell中的输入参数
- 使用getopts处理shell中的输入参数
- shell-使用getopts指定变量取值
- Shell中使用getopt、getopts命令
- 使用getopts
- getopts使用
- bash shell脚本处理传参,getopts的使用
- shell中getopt/getopts的使用 getarg和getind意义
- 在shell脚本中使用getopts处理参数
- shell's getopts
- 如何将文件夹打成jar包
- C# 串口操作系列(4) -- 协议篇,文本协议数据解析
- 二叉搜索树及其C++实现
- jQuery LigerUI 插件介绍及使用之ligerTree
- 常常困扰C语言初学者的几个问题
- [shell] getopts使用
- codeforces爆做
- 《Motion Design for iOS》(二十八)
- 你见过工资高的程序员炫富 来7拍一下
- Android自动滚动 轮播循环的ViewPager
- TQ2440 PWM驱动程序设计(内核2.6.30.4)
- 仿百度智能导诊页面
- java常量池概念,String,Integer等包装类对常量池的应用
- C# 串口操作系列(5)--通讯库雏形