shell脚本 自定义传入参数选项
来源:互联网 发布:免费手机安装窃听软件 编辑:程序博客网 时间:2024/05/22 16:52
在使用现有的如grep、awk等shell命令时,我们发现都会有一种形式,-r 参数,其实这种形式在我们自己编写的脚本中也可以定义
主要有三种方式处理命令行参数,
1、手工处理方式
2、getopts
3、getopt
1、手工处理方式:
用这种方式时,需要自己知道第几个参数对应的是什么变量,使用位置来取参数,如下所示:
<span style="font-family:SimSun;font-size:14px;">$0: 命令本身的名称$1: 第一个参数$2:依次类推,第2个参数$#:参数的个数,不包括命令本身的名称$@:参数列表,不包括命令本身的名称$*:和$@相同,但注意"$*"和"$@"并不同,“$*"将所有的参数解释成一个字符串,而"$@"是一个参数数组</span>2、使用getopts,示例如下:
<span style="font-family:SimSun;font-size:14px;">while getopts :f:d:ck: OPTIONdo case $OPTION in f) dir_str=$OPTARG ;; d) date_time=$OPTARG ;; k) key_word=$OPTARG #$OPTARG为特殊变量,表示选项的具体参数 ;; m) whole_month=y ;; \?) #如果出现错误,则解析为? echo "error params $OPTARG" ;; esacdone</span>其中,$OPTARG表示的取传进来的值
while getopts后面,f后面跟着冒号:表示该参数f接收传入参数 即-f 参数, c后面没有跟着冒号,表示该参数c不接收传入参数 即输入-c 就表示c对应的变量为y(或者为n,看自己如何定义了)
3、使用getopt,示例如下:
<span style="font-family:SimSun;font-size:14px;">set -- `getopt acdhimwe:fo "$@"` #set -- 重新组织$1 等参数while [ -n "$1" ]do echo "\$1 is $1" case $1 in -a) make_arch ;; -c) make_clean ;; -d) make_decoder ;; -h) build_help ;; -i) make_decoder_image ;; -m) move_bin ;; -w) build_welcom ;; --) shift break ;; -o) echo "find -o option" ;; -f) echo "find -f option" ;; -e) echo "find -e option with param $2" shift ;; *) echo $1 echo "unknow option" esac shiftdone</span>getopts与getopt的区别:
1. getopts是bash内建命令的, 而getopt是外部命令
2. getopts不支持长选项, 比如: --date
3. 在使用getopt的时候, 每处理完一个位置参数后都需要自己shift来跳到下一个位置, getopts只需要在最后使用shift $(($OPTIND - 1))来跳到parameter的位置。
4. 使用getopt时, 在命令行输入的位置参数是什么, 在getopt中需要保持原样, 比如 -t , 在getopt的case语句中也要使用-t, 而getopts中不要前面的-。
5. getopt往往需要跟set配合使用
6. getopt -o的选项注意一下
7. getopts 使用语法简单,getopt 使用语法较复杂
8. getopts 不会重排所有参数的顺序,getopt 会重排参数顺序
9. getopts 出现的目的是为了代替 getopt 较快捷的执行参数分析工作
0 0
- shell脚本 自定义传入参数选项
- shell 脚本传入参数
- 向shell脚本中传入参数
- 如何给shell脚本传入参数小结
- 如何给shell脚本传入参数小结
- bash shell命令行选项与修传入参数处理
- shell命令行选项与修传入参数处理
- Shell脚本:命令选项参数处理
- shell脚本-自定义option参数
- shell脚本接收来自命令行传入的参数:
- Shell使用笔记-遍历取脚本外部传入的参数
- Shell脚本接收来自命令行传入的参数
- shell脚本中用getopts处理用户输入选项和参数
- 脚本乐园 Shell中命令行选项和参数的处理
- shell脚本选项参数处理学习getopts|getopt
- shell--传入参数的处理
- shell--传入参数的处理
- shell--传入参数的处理
- POJ 1050
- 使用ftp传输文件到arm板
- Your password has expired. To log in you must change it using a cl...
- VO(DTO)模式在分层架构设计中是否需要的扯淡
- 企业如何选购适合的视频会议产品
- shell脚本 自定义传入参数选项
- WebMvcConfigurerAdapter的用法
- C++调用webservice
- IOS UIWebView与Javascript之间的交互
- The Bonus Salary! (poj 3762 离散化+最小费用流)
- Android自定义ImageView,方角,圆角头像(可根据自己的需求来设定头像的圆角或者方角的大小)
- git fetch 同步太多不需要的
- Hibernate-简介
- (15/09/14)重新开始