shell之数组
来源:互联网 发布:em算法硬币 编辑:程序博客网 时间:2024/06/04 22:07
一 数组
1.1 定义数组
通过指定元素定义
array[key]=value
key代表索引,如array[1]=one,索引从0开始
echo “${array[@]}”获取所有数组元素的值。
通过declare语句定义
declare –a array
通过元素值集合定义
array={ v0 v1 v2v3}
通过键值定义
array=([0]=value0[1]=value1)
1.2 数组的赋值
按索引为元素赋值:
array[n]=value
通过集合为数组赋值
array=(a b c)
通过循环为数组元素赋值
例子:
#! /bin/bash
#通过循环为数组赋值
for i in {1..10}
do
array[$i]=$i
done
#输出元素的值
echo"${array[@]}"
1.3 访问数组
访问第一个数组元素:
可用数组名和下标为0的元素,如echo“${array}”
通过下标访问数组元素:
下标从0开始,echo“${array[3]}”
计算数组的长度:
${#array[@]}
例子:
#! /bin/bash
#定义数组
array=(Mon Tue WedThu Fri Sat Sun)
#输出数组长度
echo "thelength of the array is ${#array[@]}"
获取某个数组元素的长度
linux[0]="Debian"
linux[1]="RedHat"
linux[2]="Ubuntu"
linux[3]="Suse"
#输出第4个元素
echo "thefourth element is ${linux[3]}"
#输出第4个元素的长度,4
echo "the length of the fourth element is${#linux[3]}"
#输出第1个元素的值
echo "thefirst element is ${linux}"
#输出第1个元素的长度
echo "the length of the first element is${#linux}"
通过循环遍历数组元素:
#! /bin/bash
array=(Mon Tue WedThu Fri Sat Sun)
#获取数组长度
len="${#array[@]}"
#通过循环结构遍历数组
for((i=0;i<$len;i++))
do
echo "${array[$i]}"
done
引用所有数组元素
#! /bin/bash
array=(Mon Tue WedThu Fri Sat Sun)
#通过循环输出所有的数组元素
for e in"${array[@]}"
do
echo "$e"
done
以切片部分获取部分数组元素
${array[@|*]:start:length}
start表示起始元素的下标,lengh表示要截取的数组元素的个数
数组元素的替换:
并不影响原来的数组的值
${array[@|*]/pattern/replacement}
pattern表示要搜索的字符串,replacement表示用来替换的字符串
#! /bin/bash
#定义数组
a=(1 2 3 4 5)
#输出替换结果
echo "theresult is ${a[@]/3/100}"
#输出原始数组
echo "the oldarray is ${a[@]}"
#将替换结果赋给一个数组变量
a=(${a[@]/3/100})
#输出新的数组变量的值
echo "the newarray is ${a[@]}"
1.4 删除数组
删除指定数组元素:
unset array[n]
删除整个数组
unset array
1.5 其他操作
复制数组:
创建一个已经存在的数组的副本
如:
newarray=(“${array[@]}”)
linux=("Debian""RedHat" "Ubuntu" "Suse" "Fedora""UTS" "CentOS")
#复制数组
linux2=("${linux[@]}")
echo"${linux2[@]}"
连接数组:
将两个数组的数组元素连接在一起,变成一个大的数组。新的数组一次包含两个数组所有元素
(”$array1[@]” “${array2[@]}”)
如:
#定义2个数组
linux=("Debian""RedHat" "Ubuntu" "Suse" "Fedora""UTS" "CentOS")
shell=("bash""csh" "ksh" "rsh" "sh" "rc""tcsh")
#连接数组
linuxshell=("${linux[@]}""${shell[@]}")
#输出合并后的数组
echo "the newarray is ${linuxshell[@]}"
#输出新的数组的长度,14
echo "thelength of new array is ${#linuxshell[@]}"
加载文件内容到数组
用户可以将普通的文本文件的内容直接加载到数组中,文件的每一行构成数组一个元素的内容。在处理日志文件时非常有用。
如:
准备一个文本文件,demo.txt
内容为
Ubuntu
Suse
Fedora
UTS
将demo.txt内容加载到一个数组中,然后将数组内容打印处理
#加载文件内容
content=(`cat"demo.txt"`)
#通过循环输出数组内容
for s in"${content[@]}"
do
echo "$s"
done
- shell脚本之shell数组
- shell之数组定义
- Shell脚本之数组
- shell之数组
- shell 脚本之数组
- Shell学习之数组
- awk之生成shell数组
- bash shell之数组使用
- linux shell 之数组操作
- bash shell之数组使用
- Linux shell之数组使用
- Shell之遍历数组-yellowcong
- linux shell之数组和关联数组
- bash shell之数组使用2
- shell浅谈之别名、列表及数组
- Shell编程之数组、字符串基本操作
- shell命令之基本的数组操作
- Shell之传递脚本参数与数组
- Ubuntu 14.04 编译安装 Tengine + PHP5.6
- 第九周OJ——等比数列
- 跨站脚本之攻防
- HTML5 canvas 绘制的文字如何换行?
- Hadoop元数据解析
- shell之数组
- Python学习笔记-初级(四):文件处理
- 编写重入和线程安全代码
- C++后台实践:古老的CGI与Web开发
- iOS 设置状态栏
- 对于简单的将数字转化为字符串
- 【codeforces】Grasshopper And the String(div2A)
- Android适配不同屏幕
- Qt:去掉Qt加载png图像文件时候的iccp警告