关闭

带 -option的Shell脚本

标签: 带参数的shell脚本
900人阅读 评论(0) 收藏 举报
分类:
       我们已经见过$* 和 $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系统的惯例,首先输入的应该是包含减号的参数。


0
0
查看评论

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

在使用现有的如grep、awk等shell命令时,我们发现都会有一种形式,-r 参数,其实这种形式在我们自己编写的脚本中也可以定义 主要有三种方式处理命令行参数, 1、手工处理方式 2、getopts 3、getopt 1、手工处理方式: 用这种方式时,需要自己知道第几个参数对应的是什么变量,使用位...
  • mm_bit
  • mm_bit
  • 2015-09-14 15:29
  • 2455

shell脚本-自定义option参数

想很久不知道怎么命名这个题目,姑且就这样吧,应该能表达我的意思了。 主要实现: (1)shell命令根据不同的option返回不同执行的功能,如ls -l和ls -a会输出不同结果。 (2)在运行过程中可以读取参数 (3)“提示选择”,罗列所有可选项,让调用者选择 (4)适当地给出“hel...
  • xianlan872522876
  • xianlan872522876
  • 2013-12-14 12:46
  • 2174

shell编程进阶

函数 定义 语法一 语法二  语法三 函数和shell 程序比较相似区别在于 函数使用相关细节 返回值 函数的退出状态码 环境函数 导出为环境函数export -f function_name 查看环境函数export -f 或者declare -fx declare -f普通函数 fork 炸弹 ...
  • yonggeit
  • yonggeit
  • 2017-05-18 15:17
  • 643

shell getopts 用法

c语言里面有个getopt_long,可以获取用户在命令下的参数,然后根据参数进行不同的提示或者不同的执行。 在shell中同样有这样的函数或者用法吧,在shell里面是getopts,也有一个getopt是一个比较老的。这次说getopts,我自己的一些用法和感悟。 首先先来一个例子吧: [hel...
  • xluren
  • xluren
  • 2013-12-22 22:05
  • 26619

根据输入选项shell脚本添加信息

function,for,select,case,脚本添加信息,选项
  • wangye1989_0226
  • wangye1989_0226
  • 2017-05-15 10:27
  • 1471

shell实现菜单选择的两种方法

命令太长, 每次输入太麻烦
  • zhulei632
  • zhulei632
  • 2014-06-05 10:34
  • 6865

Shell脚本:命令选项参数处理

Shell脚本:命令选项参数处理 Shell脚本的参数处理主要分三种情况,下面我们一一演示说明。 1、不带选项的参数处理 首先,我们通过一个不带选项的参数处理脚本,让大家了解一下shell脚本的常用内置参数。 #!/bin/bash   echo$0   #...
  • hanlizhong85
  • hanlizhong85
  • 2017-09-17 10:43
  • 181

带 -option的Shell脚本

带 -option的Shell脚本
  • Tc_To_Top
  • Tc_To_Top
  • 2016-08-30 19:30
  • 900

Linux Shell脚本详细教程

Shell简介:什么是Shell,Shell命令的两种执行方式 Shell本身是一个用C语言编写的程序,它是用户使用Unix/Linux的桥梁,用户的大部分工作都是通过Shell完成的。Shell既是一种命令语言,又是一种程序设计语言。作为命令语言,它交互式地解释和执行用户输入的命令;作为程序...
  • qq_16681169
  • qq_16681169
  • 2017-10-16 14:43
  • 157

SHELL命令之chown

root@bt:~/test# chown --help Usage: chown [OPTION]... [OWNER][:[GROUP]] FILE... or: chown [OPTION]... --reference=RFILE FILE... Change the owner an...
  • gzliu_hit
  • gzliu_hit
  • 2013-06-08 10:34
  • 1304
    个人资料
    • 访问:741880次
    • 积分:15324
    • 等级:
    • 排名:第879名
    • 原创:818篇
    • 转载:7篇
    • 译文:0篇
    • 评论:122条
    博客专栏