带 -option的Shell脚本

原创 2016年08月30日 19:30:48
       我们已经见过$* 和 $1, $2 ... $9 等特殊变量,这些特殊变量包含了用户从命令行输入的参数。迄今为止,我们仅仅了解了一些简单的命令行语法(比如一些强制性的参数和查看帮助的-h选项)。但是在编写更复杂的程序时,您可能会发现您需要更多的自定义的选项。通常的惯例是在所有可选的参数之前加一个减号,后面再加上参数值 (比如文件名)。

  有好多方法可以实现对输入参数的分析,但是下面的使用case表达式的例子无遗是一个不错的方法。

#!/bin/sh
help()
{
 cat <
This is a generic command line parser demo.
USAGE EXAMPLE: ./cmdparser -l hello -f -- -somefile1 somefile2
HELP
 exit 0
}
while [ -n "$1" ]; do
case $1 in
  -h) help;shift 1;; # function help is called
  -f) opt_f=1;shift 1;; # variable opt_f is set
  -l) opt_l=$2;shift 2;; # -l takes an argument -> shift by 2
  --) shift;break;; # end of options
  -*) echo "error: no such option $1. -h for help";exit 1;;
  *) break;;
esac
done

echo "opt_f is $opt_f"
echo "opt_l is $opt_l"
echo "first arg is $1"
echo "2nd arg is $2" 

可以这样运行该脚本:
./cmdparser -l hello -f -- -somefile1 somefile2 
返回的结果是:
opt_f is 1
opt_l is hello
first arg is somefile1
2nd arg is somefile2

这个脚本是如何工作的呢?脚本首先在所有输入命令行参数中进行循环,将输入参数与case表达式进行比较,如果匹配则设置一个变量并且移除该参数。根据unix系统的惯例,首先输入的应该是包含减号的参数。


版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

shell脚本-自定义option参数

想很久不知道怎么命名这个题目,姑且就这样吧,应该能表达我的意思了。 主要实现: (1)shell命令根据不同的option返回不同执行的功能,如ls -l和ls -a会输出不同结果。 (2)在运...

shell getopts 用法

c语言里面有个getopt_long,可以获取用户在命令下的参数,然后根据参数进行不同的提示或者不同的执行。 在shell中同样有这样的函数或者用法吧,在shell里面是getopts,也有一个get...
  • xluren
  • xluren
  • 2013年12月22日 22:05
  • 23315

linux shell getopts

1、getopts使用方式: g e t o p t s一般格式为: getopts option_string variable   g e t o p t s读取o p t i o n s...

shell脚本 自定义传入参数选项

在使用现有的如grep、awk等shell命令时,我们发现都会有一种形式,-r 参数,其实这种形式在我们自己编写的脚本中也可以定义 主要有三种方式处理命令行参数, 1、手工处理方式 2、getopts...
  • mm_bit
  • mm_bit
  • 2015年09月14日 15:29
  • 1964

shell脚本专家指南(带书签)

  • 2014年08月31日 19:30
  • 16.54MB
  • 下载

python 如何调用带参数的shell脚本

举例: shell的脚本: t.sh内容: echo "this is a test shell with arguments" echo "arg1 = $1; arg2 = $2;...
  • jjwspj
  • jjwspj
  • 2012年08月22日 17:18
  • 3489

Linux使用shell脚本调用sendmail发送带附件的邮件

带附件功能 环境:Linux(CentOS6.5) sendmail发送带附件的邮件,需要用uuencode命令,这个命令在sharutils组件中。yum install sharutils安装...

shell脚本输出带颜色字体

输出特效格式控制: \033[0m  关闭所有属性   \033[1m   设置高亮度   \03[4m   下划线   \033[5m   闪烁   \033[7m   反显   \03...

shell脚本中echo显示内容带颜色

转自--http://www.cnblogs.com/lr-ting/archive/2013/02/28/2936792.html
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:带 -option的Shell脚本
举报原因:
原因补充:

(最多只允许输入30个字)