红联Linux门户
Linux帮助

bash数组

发布时间:2009-08-24 17:27:57来源:红联作者:zrl2088
BASH 数组用法小结



【小蜗牛五二无聊之作】



BASH只支持一维数组,但参数个数没有限制。



声明一个数组:

declare -a array



(其实不用声明,按数组方式直接赋值给变量即可,BASH就知道那是数组)



数组赋值:

(1) array=(var1 var2 var3 ... varN)

(2) array=([0]=var1 [1]=var2 [2]=var3 ...

[n]=varN)

(3) array[0]=var1

arrya[1]=var2

...

array[n]=varN



计算数组元素个数:

${#array[@]} 或者 ${#array[*]}



BASH的特殊参数 @ 和 *

都表示“扩展位置参数,从1开始”,但形式稍有差异,但在数组里使用好像是可以通用的。



引用数组:

echo ${array[n]}



遍历数组:

filename=(`ls`)

for var in ${filename[@]};do

echo $var

done



数组实用示例:(个人收集整理)



1、从“标准输入”读入n次字符串,每次输入的字符串保存在数组array里

i=0

n=5

while [ "$i" -lt $n ] ; do

echo "Please input strings ... `expr $i + 1`"

read array[$i]

b=${array[$i]}

echo "$b"

i=`expr $i + 1`

done



2、将字符串里的字母逐个放入数组,并输出到“标准输出”

chars='abcdefghijklmnopqrstuvwxyz'

for (( i=0; i<26; i++ )) ; do

array[$i]=${chars:$i:1}

echo ${array[$i]}

done



这里有趣的地方是 ${chars:$i:1},表示从chars字符串的 $i 位置开始,获取 1

个字符。如果将 1 改为 3 ,就获取 3 个字符啦~ 结果是:

abc

bcd

...

vxy

xyz

yz //没有足够字符串获取了

z //没有足够字符串获取了

3、将数组应用到shell环境变量



3、将数组应用到shell环境变量(1)



数组赋值:

[root@pps ~]# SEASON=("Srping" "Summer" "Autumn"

"Winter")

当你发现赋值错了,也可以立刻从新赋值纠正,如上面的 Spring 被写成 Srping。

重新赋值:(原来的值被重写)

[root@pps ~]# SEASON=("Spring" "Summer" "Autumn"

"Winter")



查看一下环境变量:

[root@pps ~]# set | grep SEASON

SEASON=([0]="Spring" [1]="Summer" [2]="Autumn"

[3]="Winter")



显示整个数组:

[root@pps ~]# echo ${SEASON[*]} 或者 echo

${SEASON[@]}

Spring Summer Autumn Winter



显示某一数组元素:

[root@pps ~]# echo ${SEASON[3]}

Winter



给单个数组元素赋值:

[root@pps ~]# SEASON[0]="New_Spring"



再查看一下看数组:

[root@pps ~]# echo ${SEASON[*]}

New_Spring Summer Autumn Winter



清除指定的单个数组元素:

[root@pps ~]# unset SEASON[2]



清除整个数组:

[root@pps ~]# unset SEASON



4、将数组应用到shell环境变量(2) 【这个用法不错!给原作者赞一个!】



使用tr命令将文件中的回车转换成空格:

[root@pps ~]# cat /etc/shells | tr "\n" " " >

/tmp/tmp.file



将文件中内容给数组赋值:(碰到第一个回车符之前的内容)

[root@pps ~]# read -a SHELLS < /tmp/tmp.file



查看数组赋值情况:

[root@pps ~]# set | grep "SHELLS"

SHELLS=([0]="/bin/sh" [1]="/bin/bash"

[2]="/sbin/nologin" [3]="/bin/tcsh"

[4]="/bin/csh" [5]="/bin/ksh")



后面可以将这个数组环境变量应用到其它的SHELL脚本或者应用程序里了~
文章评论

共有 0 条评论