数组--声明-定义-追加-清楚操作--(网上收集)

[关于声明]
比较通用的做法,如kshbash
declare -a
数组名

注意在ksh下还支持另外一种独特的变量声明赋值语法比较特殊。


set -A varname var1 var2 var3 varn

末了要说明一下,一般任意的shell下变量可以拿来就用,不必声明。

[关于赋值]
下面的两种这种方法适用于bashksh
定义一
varname=(var1 var2 var3 varn)
定义二
varname[0]=var1
varname[1]=var2
varname[2]=var3
varname[n-1]=varn
定义三
csh我们需要这样定义:
set varname=(var1 var2 var3 varn)
set varname[1]=var1
set varname[2]=var2
set varname[3]=var3
set varname[n]=varn

特别注意在csh和其它shell中不同的是数组的下标是从1开始的。

[关于引用]
全部引用
方法一
适用于bashkshcsh等大部分shell
${varname[*]}
方法二
只适用于bashksh,对于csh不适用。
${varname[@]}

方法三

只适用于csh,不支持kshbash
$varname

单独引用
语法适用于bashkshcsh等大部分shell,但是在csh/tcsh下的意义和其它shell有差异。
${varname[n]}
例如:echo ${barname[3]}

请严格区分cshbashcsh的区别。因为在csh中没有下标为0的数组元素,下标的序数是从1开始的。


数组包含数值的数目

方法一:
只适用于bashksh,不支持csh
${#varname[*]}
方法二:

只支持csh,不支持bashksh

$#varname


数组中某一个值的字符长度
只适用于bashksh,不支持csh
${#varname[1]}

bashksh $varname${varname[0]}的含意是一样的; $varname[1]${varname[1]}含意是不一样的,$varname[1]等价于${varname[0]}"[1]"。在csh $varname${varname[*]}的含意是一样的。

[元素的添加、删除]
删除数组中元素:
该方法适用于bashksh,不支持csh
unset varname[5]
关于数组中元素的值的清除,即置空:
bash
ksh下这样操作,不支持csh
varname[5]= #
清除数组varname中的第六个元素
关于数组的清除:
适用于bashkshcsh等大部分shell
unset varname

向数组中添加元素:
方法一、二只适用于bashksh,不适用于csh

方法一:
varname=(${varname[*]} varn-1 varn varn+1)
方法二:
varname[${#varname[*]}]=varn
方法三:
csh特有的。
set varname=($varname varn+1 varn+2) #
或者$varname${varname[*]}替换。

[关于数组的批量处理]
这部分内容,说白了就是综合运用各种shell的内建循环命令。只要对前面的内容熟悉了,并对各种shell的循环命令有一定的了解,难度就不是很大。
由于涉及bashkshcsh下的实现及不同的语法形式,涉及数组的赋值、添加和删除元素、读取多个方面。所以计划单独一篇文章来说明。

 

猜你喜欢

转载自see-you-again.iteye.com/blog/2361153