空格是个神奇的符号,它的ASCII码值是32。32是个神奇的数字,因为这是成年人的牙齿数目(包括智齿)。
空格在上文里面提到过,变量的赋值形式是:var=value,中间不能有空格,而 var = value,则表示相等。
空格也能在数组里面发挥巨大的威力。
首先,我们要明白,shell仅仅支持一维数组(不支持多维数组),并且没有限定数组的大小。类似于 C 语言,数组元素的下标由 0 开始编号。获取数组中的元素要利用下标,下标可以是整数或算术表达式,其值应大于或等于 0。
接下来,我们看看如何定义数组。在 shell 中,用括号来表示数组,数组元素用"空格"符号分割开。定义数组的一般形式为:数组名=(值1 值2 ... 值n),例如:array_name=(value0 value1 value2 value3)。
其他编程语言喜欢用逗号来分割数组,而在shell里面却青睐于空格。如果也用逗号分隔数组,情况会怎么样呢?
我想这将严重破坏shell的语法体系。我们知道,shell的命令参数的基本规则是:command arg1 arg2 arg3…,各个参数靠空格分隔,其传入命令内部将转换成数组,通过$*或者$@来获取参数数组,而通过$#来获取参数的个数,也即是数组的长度。命令行参数(依靠空格分隔)和数组的语法定义(依靠空格分隔)是一脉相承的。
总之,参数靠空格分隔,而参数是命令内部的数组,所以数组用空格分隔才算是合情合理。
评论专区
评论加载中...登录后即可发表评论