shell 编程数组总结

数组总结



目录:

  1. 数组组成
  2. 数组赋值
  3. 数组输出
  4. 数组案例


1.数组组成

数组的组成就是一个元素的集合,将多个元素利用一个变量存储,避免一个元素采用一个变量而导致形成大量的变量,数组构成由数组名(变量)、元素(变量值)和数组下标组,读取一个数组时采用语法结构为:${变量名[索引编号]},其等价于{$变量名[1]、$变量名[2]..$变量名[n]}。

数组的分类主要分为两类,第一类是普通数组,普通数组索引编号是连续的,申明普通数组采用语法结构:delcare –a 数组名。第二类是关联数组,关联数组是索引编号不连续的的数组,申明关联数组采用语法结构:declare –A 数组名。

2.数组赋值

变量的复制类似for循环中循环取值,可以通过多种方式进行赋值,具体方法如下:

方法1:通过小括号将整数列表直接值赋值给数组


#!/bin/bash

declare  -a arr

arr=( 1 2 3 )                      #将定义整数列表赋值

for i in {0..2};do

echo "this is the $i times"

echo "value=${arr[$i]}"

done

方法:2:通过命令返回值进行


[[email protected]  ~/txt]#vim array.sh

#!/bin/bash

arr=( $(ls /root/txt/) )

for i in {0..2};do

echo "this is the $i times"

echo "value=${arr[$i]}"

done

[[email protected]  ~/txt]#./array.sh    #执行脚本则显示脚本名称,仅仅是脚本名称而已

this is the 0  times

value=1.txt

this is the 1  times

value=2.txt

this is the 2  times

value=3.txt

方法3:通过通配符进行赋值


[[email protected]  ~/txt]#vim array.sh

#!/bin/bash

declare -a arr1

arr1=(/root/txt/*.txt)                        #数组赋值文件,对文件进行处理

for j in {0..2};do

echo "this is the $j times"

[  -f ${arr1[$j]} ] && echo zunzai || echo bucunzai   #通过数组元素判断文件是否存在

lines=`cat ${arr1[$j]} |wc -l`                        #统计每个文件的行号

let sum+=$lines

echo $sum

echo "value=${arr1[$j]}"                              #通过数组显示文件名称

done

[[email protected]  ~/txt]#./array.sh                            #验证执行结果

this is the 0  times

this is first  txt.word

value=1.txt

this is the 1  times

this is sencond  txt.word

value=2.txt

this is the 2  times

this is three  txt.word

value=3.txt

3.数组输出

数组相当于一系列的变量元素的集合,在数组输出时,可以输出指定的元素、输出整体的元素和元素的个数:

1.输出整体的元素,采用语法结构为${变量名[*|@]},其中*|@表示通配符任意的意思,因此会输出所有的元素。


[[email protected]  ~/txt]#intarr=( 1 2 3 )

[[email protected]  ~/txt]#echo ${intarr[*]}

1 2 3

2.输出指定的元素,采用语法结构为${变量名[索引编号]},其中索引编号从0开始


[[email protected]  ~/txt]#intarr=( 1 2 3 )

[[email protected]  ~/txt]#echo ${intarr[0]}

1

[[email protected]  ~/txt]#echo ${intarr[1]}

2

3.在数组中修改其中某一个数组变量的元素或增加一个元素,采用语法结构为:变量名[索引编号]=***,当变量的索引编号存在时,覆盖变量元素原有的值,如若不存在变量的索引编号时,在数组中添加新增的变量元素。


[[email protected]  ~/txt]#intarr[1]=20     #存在索引编号1,因此覆盖原有值

[[email protected]  ~/txt]#echo ${intarr[1]}

20

[[email protected]  ~/txt]#intarr[3]=40     #不存在索引编号3,因此新增变量值

[[email protected]  ~/txt]#echo ${intarr[*]}

1 20 3 40

4.在数组中将某个元素删除采用语法结构为:unset 数组[索引编号],删除整个数组时:unset数组。


[[email protected] ~/txt]#echo ${intarr[*]}    #打印真个数组

1 20 3 40

[[email protected] ~/txt]#unset intarr[3]      #删除数组中第4个元素

[[email protected] ~/txt]#echo ${intarr[*]}

1 20 3

[[email protected] ~/txt]#unset intarr         #删除真个数组

[[email protected] ~/txt]#echo ${intarr[*]}

5.在数组中将截取某一段数组元素,语法结构分别为:${数组名[@]:offset:#},offset表示数组偏移个数,#表示取偏移后的多少个元素。


[[email protected] ~/txt]#intarr=({a..z})                #生成序列

[[email protected] ~/txt]#echo ${intarr[*]}

a b c d e f g h i j k l m n o p q r s t u v w x y z

[[email protected] ~/txt]#echo ${intarr[@]:2:2}     #取第2个元素后面的两个元素

c d

6.在数组中将数组某元素替换,语法结构分别为:${数组名[@]/###/***},offset表示数组中元素为###的替换为***,注意替换的是元素。


[[email protected] ~/txt]#echo ${intarr[*]}

a b c d e f g h i j k l m n o p q r s t u v w x y z

[[email protected] ~/txt]#echo ${intarr[@]/a/b}                 #匹配数组元素中的a进行替换为b

b b c d e f g h i j k l m n o p q r s t u v w x y z

4.数组案例

1.循环打印数组元素,数组包含IP地址:192.168.1.110.1.1.1 172.16.0.1;


#!/bin/bash

declare -a ip_arr

declare -i i=0

declare -i j

ip_arr=(                            #定义数组,数组元素为IP地址,充分说明数组就是变量的集合

192.168.1.1

10.1.1.1

172.16.0.1

)

###############################################

echo “方法1循环打印数组元素

for i in $(seq 0 $[${#ip_arr[*]}-1]);do

echo ${ip_arr[$i]}

let i++

done

###############################################

echo "方法2循环打印数组元素"

for (( j=0;j<${#ip_arr[*]};j++))

do

echo ${ip_arr[$j]}

done

###################将数组作为for循环中的元素进行循环##########################

echo "方法3数组遍历打印数组元素"

for n in ${ip_arr[*]};do

echo $n

done

时间: 2024-10-25 02:42:41

shell 编程数组总结的相关文章

shell编程-数组

#!bin/bash/ A=(a b c hello) echo ${A[*]} echo ${A[@]} echo ${A[0]} echo ${A[1]} echo ${A[2]} echo ${A[3]} echo ${A[4]} 在shell里变量及数据都不用定义类型,因为都是字符型.A[@].A[*]都是表示整个数组 A[3]输出hello 说明hello是一个元素 ,每个元素都是以空格隔开

Shell 编程 数组

本篇主要写一些shell脚本函数的使用. 数组定义 数组名=(value0 value1 vlaue2 ...) 数组名=([0]=value [1]=value [2]=vlaue ...) 列表名="value0 value1 vlaue2 ..." 数组名=($列表名) 数组名[0]="value" 数组名[1]="value" 数组名[2]="value" ... 获取数组长度 ${#数组名[@]} ${#数组名[*]

shell编程企业级实战(2)

Vim配置文件.vimrc vim配置文件 if 条件语句 if是最常见的条件判断语句 例1:如果不存在/backup目录就创建. [root@web-01 /server/tools]# vim 07-01.sh#!/bin/baspath=/backup[ -d $path ] || mkdir $path -p# 相当于# :冒号表示什么也不干if [ -d $path ] then        :else        mkdir $path -pfi# 或者[ !-d $path ]

(转)轻松掌握shell编程中数组的常见用法及示例

缘起:在老男孩进行linux培训shell编程教学中,发现不少水平不错的网友及同学对数组仍然很迷糊,下面就给大家分享下数组的用法小例子,希望能给大家一点帮助.其实SHELL的数组很简单,好用.我们学习都应该遵循简单.易用的原则. shell编程中数组的简单用法及示例 新版本的Bash支持一维数组. 数组元素可以使用符号variable[xx]等方式来初始化. 另外, 脚本可以使用declare -a variable语句来指定一个数组等.要引用一个数组元素(也就是取值), 可以使用大括号, 访问

shell编程系列4--有类型变量:字符串、只读类型、整数、数组

shell编程系列4--有类型变量:字符串.只读类型.整数.数组 有类型变量总结: declare命令和typeset命令两者等价 declare.typeset命令都是用来定义变量类型的 declare命令参数总结 1.declare -r 将变量设置为只读类型 declare -r var="hello" var="world" # 变量默认可以修改 [[email protected] shell]# var2="hello world"

Shell编程之数组使用

记录一下shell中数组的使用 主要是数组元素的创建,元素的增.删.改操作. 1 #!/bin/bash 2 3 #基本数组操作 4 a=(1 2 3) ##()表示空数组 5 echo "第0个元素:"${a[0]} 6 echo "所有元素: "${a[@]} 7 echo "数组长度: "${#a[@]} 8 echo "----------------------------------------------" 9

Linux shell 编程(五):数组

数组 数组是有序的元素序列 .若将有限个类型相同的变量的集合命名,那么这个名称为数组名.组成数组的各个变量称为数组的分量,也称为数组的元素,有时也称为下标变量.用于区分数组的各个元素的数字编号称为下标.数组是在程序设计中,为了处理方便, 把具有相同类型的若干元素按无序的形式组织起来的一种形式.这些无序排列的同类数据元素的集合称为数组. 在shell中数组有两种类型: 索引数组(indexed arrays) 关联数组(associative arrays) 索引数组(indexed arrays

老男孩新书Shell编程实战预定开始了-包邮包答疑

老男孩新书Shell编程实战预定开始了(扫图中二维码购买包邮定期包答疑),亲爱的伙伴们,让你们久等了.电脑用户猛戳 电脑购买链接 注意:包邮包3个月(2017春节后起算)Q群书籍内容答疑,等于白送书,还倒搭答疑服务. 如果觉得给力,请帮忙朋友圈.QQ群.空间转载! 活动优惠仅限本次活动,从其他渠道购买不享受此次的服务承诺. 定价 89元 基本信息 作者: 老男孩 丛书名: Linux/Unix技术丛书 出版社: 机械工业出版社 ISBN:9787111556077 上架时间:2017-1-6 出

第三章 shell编程之运算符

shell编程之运算符 一 shell变量的缺点 弱类型: 默认字符串型: 二 declare声明变量类型 格式:declare [+/-][选项] 变量名 -:给变量设定类型属性: +:取消变量的类型属性: -a:将变量声明为数组型: