linux学习笔记

The last parameter is 5 The last paramerer is 5 $ ./test10

The last parameter is 0 The last parameter is ./test10 $

很完美,这个测试指定$#变量参数的变量值,然后使用该变量的特殊的命令行参数变量的格式。两个版本都工作。同样重要的是要注意到,当命令行没有任何参数时,$#价值为零,这就是参数可变,但$ {!# }变量在命令行上返回脚本名称。

Grabbing all the data(抓取所有的数据)

有时,你会想遍历所有的提供的命令行参数。而不是乱用$#变量来确定多少的参数是在命令行中,然后遍历所有的他们,你可以使用一些特殊的变量。

$ *和$ @变量为你的所有参数提供一站式购物服务。这两个变量包括所有的命令行参数在一个单一的变量中。

$ *变量把在命令行上提供的所有参数都看作一个字。每一个单词都包含在命令行上出现的值。而不是把参数作为多个对象,$ *变量将他们作为一个参数来对待。

另一方面,$ @变量,需要把命令行上提供的所有参数作为同一个字符串中的单独的单词。它允许你通过迭代值,分离出各参数提供。这

是最经常使用的命令。

通过使用命令遍历特殊变量,你可以看到他们如何的对待命令行参数。$ *变量处理所有参数都是一个字,而$ @变量单独处理每个参数。

Being Shifty()

在你的bash shell中,你的另一个工具是是移位指令。bash shell提供移动命令来帮助我们处理命令行参数。它将命令行参数转移到相对位置。

当你使用shift命令,它把各参数变量向默认的位置降低一级。因此,变量3的值被转移到2,2的值转移到1,1值被丢弃(注意变量$ 0,程序名称,保持不变)。

这是一个通过命令行参数迭代的好方法,尤其是如果你不知道有多少参数可用。你可以操作第一个参数,然后将参数转移到第一个参数上。 这是一个简短的示例:

该脚本执行一个循环,测试了第一个参数值的长度。当第一个参数的

长度为零时,循环结束。

测试完的第一个参数后,shift命令是用来转移一个位置的所有参数。 另外,您可以通过向shift命令提供一个参数来执行多个位置移动。只要提供你想要改变的地方:

$ cat test14 #!/bin/bash

# demonstrating a multi-position shift echo \shift 2

echo \’s the new first parameter: $1\$ ./test14 1 2 3 4 5

The original parameters: 1 2 3 4 5 Here’s the new first parameter: 3 $

通过使用移位命令中的值,可以很容易地跳过不需要的参数。

Working With Options(使用选项)

如果你一直跟随在这本书中,你就已经见过几个bash命令提供参数和选项。本节显示了三种不同的方法在你的脚本中使用选项。 Finding your options

在表面上,命令行选项没有什么特别的。他们出现在命令行上,紧跟在脚本名称之后,就和命令行参数一样。事实上,如果你想要的话,

你可以用处理命令行参数同样的方式来处理命令行选项。 Processing simple options(处理简单的选项)

在test13你看到了如何使用shift命令设置的脚本程序。你可以使用同样的技术来操作命令行选项。

当你提取各个参数时,用case语句来确定把参数格式化为一个选项:

$ cat test15 #!/bin/bash

# extracting command line options as parameters while [ -n \do

case \

-a) echo \-b) echo \-c) echo \*) echo \esac shift done

$ ./test15 -a -b -c -d Found the -a option Found the -b option Found the -c option

联系客服:779662525#qq.com(#替换为@)