linux学习笔记 下载本文

#!/bin/bash

# testing two command line parameters total=$[ $1 * $2 ]

echo The first paramerer is $1. echo The second parameter is $2. echo The total value is $total. $ ./test2 2 5

The first paramerer is 2. The second parameter is 5. The total value is 10. $

shell将每个参数分配给合适的变量。

在这个例子中,使用的命令行参数都是数值的。你还可以在命令行中使用文本字符串:

$ cat test3 #!/bin/bash

# testing string parameters echo Hello $1, glad to meet you. $ ./test3 Rich

Hello Rich, glad to meet you. $

shell通过将字符串值输入到脚本的命令行中。但是,如果你试图用

一个包含空格的文本字符串来做这个问题,你会有一个问题:

$ ./test3 Rich Blum

Hello Rich, glad to meet you. $

记住,每一个参数都由一个空格隔开的,所以shell把空格解释为 只是把两个值分开。要将空格作为参数值,必须使用引号 标记(单引号或双引号):

$ ./test3 ’Rich Blum’

Hello Rich Blum, glad to meet you. $ ./test3 \

Hello Rich Blum, glad to meet you. $

要注意,引号不是数据的一部分,他们只是描绘的开始和结束数据的。 如果你的脚本需要九个以上的命令行参数,你可以继续,但变量名称有所变化。第九个变量之后,你必须使用括号中的变量数,如$ { 10 }。下面就是这样做的一个例子:

这种技术可以让你在你的脚本中添加你可能需要用到的尽可能多的

命令行参数。

Reading the program name(阅读程序名称)

你可以用0这个参数来确定这个开始的程序的名字。但是,有一个小问题,你必须处理。看看下面这个简单的例子发生了什么:

变量中的实际字符串是用于该程序的整个路径,而不只是程序名称。 如果你想写一个基于在命令行运行的执行不同功能的脚本,你必须做一点工作。你需要去掉任何从命令行运行脚本的路径。

幸运的是,我们有一个方便的小命令可供我们使用。basename命令返回没有路径的程序名称。让我们修改示例脚本看看这是如何工作的:

现在好了很多。你可以使用这种技术来编写的执行不同功能的的脚

本。

下面是一个简单的例子来演示这个:

该示例在test6代码中创建两个单独的文件名,一个是直接复制文件,另一个是使用链接来创建新文件。

Testing parameters(测试参数)

当你使用命令行参数时,你需要小心一点。如果脚本运行没有参数,不好的事情可能发生:

$ ./addem 2

./addem: line 8: 2 + : syntax error: operand expected (error token is \

The calculated value is $

当脚本推断这里有一个参数变量中的数据,但事实上却没有,那么你很有可能从你的脚本中获得错误信息。这不是一个很好的编写脚本的