Shell 脚本基础学习 (三)

来源:互联网 发布:手机淘宝淘金币在哪里 编辑:程序博客网 时间:2024/06/16 09:34
functionname(){# inside the body $1 is the first argument given to the function # $2 the second ...body}


函数

如果您写了一些稍微复杂一些的程序,您就会发现在程序中可能在几个地方使用了相同的代码,并且您也会发现,如果我们使用了函数,会方便很多。一个函数是这个样子的:

您需要在每个程序的开始对函数进行声明。

下面是一个叫做xtitlebar的脚本,使用这个脚本您可以改变终端窗口的名称。

这里使用了一个叫做help的函数。正如您可以看到的那样,这个定义的函数被使用了两次。

复制代码
 1 #!/bin/sh  2 # vim: set sw=4 ts=4 et:  3 help()  4 {  5 cat <  6 xtitlebar -- change the name of an xterm, gnome-terminal or kde konsole  7 USAGE: xtitlebar [-h] "string_for_titelbar"  8 OPTIONS: -h help text  9 EXAMPLE: xtitlebar "cvs" 10 HELP 11 exit 0 12 } 13 # in case of error or if -h is given we call the function help: 14 [ -z "$1" ] && help 15 [ "$1" = "-h" ] && help 16 # send the escape sequence to change the xterm titelbar: 17 echo -e "33]0;$107" 18 #
复制代码


在脚本中提供帮助是一种很好的编程习惯,这样方便其他用户(和您)使用和理解脚本。

命令行参数

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

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

 

View Code

 

返回的结果是:

opt_f is 1

opt_l is hello

first arg is -somefile1

2nd arg is somefile2

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