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脚本或者应用程序里了~

——————————————————————————————

赵小蜗牛

QQ: 755721501

E-mail: snailwarrior@qq.com

在不断奉献中谋求生存发展、打造自己的优秀品质,用人性最本质最动人的一面“营销”自己!

本文出自 “小蜗牛技术之家” 博客,请务必保留此出处http://snailwarrior.blog.51cto.com/680306/154704

无觅相关文章插件,快速提升流量


发表评论

电子邮件地址不会被公开。 必填项已用 * 标注

*


您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Bad Behavior has blocked 1476 access attempts in the last 7 days.

site tracking with Asynchronous Google Analytics plugin for Multisite by WordPress Expert at Web Design Jakarta.

serial corel draw 11

serial corel draw 11 serials

free corel photoshop download

free corel photoshop download keygen

adobe free

adobe free

key office 2010

office 2010 key

download photo shop free

photo shop serial

free winrar download for xp

download winrar for xp for free

windows 7 free

windows 7 crack

cs5 serialz

cs5 serialz free

free corel downloads

free corel downloads cracked

office 2010 free

office 2010 key

winrar password cracker serial

wirar password cracker

serial winzip 11

serial winzip 11 key

photoshop key

photoshop key

windows key

windows key

corel dvd moviefactory 6

corel dvd moviefactory 6 downloads

office 2010 professional key

office 2010 key

photo shop key

photo shop key

winrar 3 download

winrar 3 download freedownload

windows 7 key

windows 7 key