加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

[转]shell 数组定义、使用和追加

(2015-05-14 12:34:25)
标签:

shell

数组

追加

声明

遍历

分类: Linux

1.声明数组

declare -a myarray

在函数中还可以用local 来声明数组

 

local -a myarray

 

2.给数组赋值。

 

2.1.对于shell能返回多个值的,可以直接赋值,比如

myarray=`ls *.bin 2>/dev/null`

这条语句把当前目录下所有的.bin文件赋值给myarray

 

2.2.也可以从让用户输入

 read -a myarray

 

2.3.用索引值来访问

${array[0]}='test'

 

2.4.也可以用下面的方法往数组里追加值

myarray=(${myarray[*] test);

 

3.打印数组所有的值

 

echo ${myarrra[*]};

echo ${myarrra[@]};

 

4.逐一读出数组的值

for item in ${myarray[*]};

do

echo $item;

done;

 

 

5.清空数组

uset ${myarray}

myarray=

 

6、向数组追加元素的方法与数组复制非常类似。最简单的追加到数组的方法是将数组复制语句进行扩展。
 
$ hobbies=( "${activities[@]" diving }
 $ for hobby in "${hobbies[@]}"
> do
>   echo "Hobby: $hobby"
> done
Hobby: swimming
Hobby: water skiing
Hobby: canoeing
Hobby: white-water rafting
Hobby: surfing
Hobby: scuba diving
Hobby: diving
$
 
本章开头介绍了如何使用seq 0 $((${#beatles[@]}–1))获取数组的最后一个实际元素。但数组从0开始索引这一事实使得这一任务变得有些棘手。在向数组追加单个元素时,数组从0开始索引实际上使得追加操作更容易。
$ hobbies[${#hobbies[@]}]=rowing
$ for hobby in "${hobbies[@]}"
> do
>   echo "Hobby: $hobby"
> done
Hobby: swimming
Hobby: water skiing
Hobby: canoeing
Hobby: white-water rafting
Hobby: surfing
Hobby: scuba diving
Hobby: diving
Hobby: rowing
$
bash shell确实有组合两个数组的内置语法。这种使用C风格符号+=的方法更简洁,而且写出的代码更清晰。
$ airsports=( flying gliding parachuting )
$ activities+=("${airsports[@]}")
$ for act in "${activities[@]}"
> do
 echo "Activity: $act"
> done
Activity: swimming
Activity: water skiing
Activity: canoeing
Activity: white-water rafting
Activity: surfing
Activity: scuba diving
Activity: climbing
Activity: walking
Activity: cycling
Activity: flying
Activity: gliding
Activity: parachuting

 

7、数组的遍历用到一个取全部:

  1. ${array[@]}  

,完整示例如下:

  1. for data in ${array[@]}  
  2. do  
  3.     echo ${data}  
  4. done  

转自:http://book.2cto.com/201209/3572.html

http://blog.csdn.net/learnrose/article/details/6254249

http://www.linuxidc.com/Linux/2011-09/42929.htm

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有