LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 146|回复: 0

shell中的数组

[复制链接]
发表于 2023-12-29 17:06:07 | 显示全部楼层 |阅读模式


为什么会产生Shell数组
  通常在开发Shell脚本时,定义变量采用的形式为“a=l;b=2;C=3”,可如果有多个 变量呢?这时再逐个地定义就会很费劲,并且要是有多个不确定的变量内容,也会难以 进行变量定义,此外,快速读取不同变量的值也是一件很痛苦的事情,于是数组就诞生 了,它就是为了解决上述问题而出现的。

什么是Shell数组

  Shell的数组就是一个元素集合,它把有限个元素(变量或字符内容)用一个名字来 命名,然后用编号对它们进行区分。这个名字就称为数组名,用于区分不同内容的编 号就称为数组下标。组成数组的各个元素(变量)称为数组的元素,有时也称为下标变量。



数组中的增删改查

数组的定义

# 定义数组
[root@clsn scripts]# stu=(001 002 003)
# 打印数组
[root@clsn scripts]# echo ${stu[@]}
001 002 003
# 显示数组长度
[root@clsn scripts]# echo ${#stu}
3
查: 遍历数组的内容

# 打印数组内容(通过数组下标或索引)
[root@clsn scripts]# echo ${stu[0]}
001
[root@clsn scripts]# echo ${stu[1]}
002
[root@clsn scripts]# echo ${stu[2]}
003
[root@clsn scripts]# echo ${stu[3]}

# 遍历数组
  方法一
[root@clsn scripts]# for i in ${stu[@]};do echo $i ;done
001
002
003
    # 方法二
[root@clsn scripts]# array=(1 2 3 4 5)
[root@clsn scripts]# for i in `eval echo {1..${#array[@]}}`;do echo ${array[i-1]};done
1
2
3
4
5
增:数组添加

[root@clsn scripts]# stu[3]=004
[root@clsn scripts]# echo ${stu[@]}
001 002 003 004
改:数组修改

[root@clsn scripts]# stu[2]=000
[root@clsn scripts]# echo ${stu[@]}
001 002 000 004
删:数组删除

[root@clsn scripts]# unset stu[2]
[root@clsn scripts]# echo ${#stu[@]}
3
[root@clsn scripts]# echo ${stu[@]}
001 002 004
1.6.4 将命令的结果赋值给数组
dir=(`ls`)
dir=($(ls))
命令定义数组

[root@clsn scripts]# COM=(`ls`)
[root@clsn scripts]# echo ${COM[@]}
bianliang.sh case cfb.sh chanshu.sh check check_url.sh
clsn.sh clsn_test.sh daojishi.sh ddos_check.sh echo.sh for for2 fruits.sh
function fz.sh html jingdutiao.sh jishuanqi2.sh jishuanqi.sh lamp.sh lnmp.sh
memcache_check.sh menu.sh nginx.sh panduan panduan1 play quanju.sh rsync_check.sh
rsyncd system6 tuichu web_check.sh web_view.sh while xiugaizhuji.sh yhk.sh yunshuan.sh
zhuajiu.sh


数组定义格式

[root@clsn scripts]# a=(1 2 3 )
[root@clsn scripts]# b=(1
> 2
> 3
> 4
> )
[root@clsn scripts]# echo ${a[@]}
1 2 3
[root@clsn scripts]# echo ${b[@]}
1 2 3 4


数组的本质就是一个变量,只是这个变量存了多个值

在shell 常用的功能是查

   array=(valuel value2 value3 ...)

打印数组格式

${array[@]} 所有元素
${#array[@]}  数组长度
${array}  单个元素,i是下标



您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表