shell中关于数组的使用

shell中关于数组的使用

在Shell中,数组是一种可以存储多个值的变量。数组的每个值都由一个数字索引来访问。在Shell中,数组的索引从0开始。

数组的常见的使用方法包括

  • 数组的定义
  • 数组的打印
  • 数组长度
  • 数组的遍历
  • 数组元素的打印
  • 数组元素的添加
  • 数组元素的删除

数组的定义

复制代码
# 定义数组
list=("value1" "value2" "value3")

数组的长度

复制代码
   echo ${#list[*]}
   echo ${#list[@]}

数组元素的输出

shell(这里指常用的bash)中数组的下标与c,python,go等编程语言一样 ,下标是0开始的;

复制代码
list=(value1 value2 value3);echo $list[0]  // value1
list=(value1 value2 value3);echo $list[1]  // value2
list=(value1 value2 value3);echo $list[3]  // value3

特别注意,/bin/zsh的下标是从1开始,而不是0开始

复制代码
(base) {14:45}~/script ➭ echo $SHELL
/bin/zsh
(base) {14:45}~/script ➭ list=(value1 value2 value3);echo ${list[0]} // 输出为空

(base) {14:45}~/script ➭ list=(value1 value2 value3);echo ${list[1]} // 输出为value1
value1

数组的遍历

复制代码
# 遍历方式一
for i in ${list[@]}
do
   echo $i
done

# 遍历方式二
for((i=0;i<${#list[*]};i++))
do
   echo ${list[$i]}
done

数组元素的打印

复制代码
echo ${list[*]}
echo ${list[@]}

echo ${list} 等价于echo ${list[0]}

数组元素的添加

没有直接的方法添加元素,可以将原数组中的所有元素与新添加元素定义为一个新数组,并加新数组的内"覆盖"原同名的数组。

复制代码
list=("${list[*]}" "value4")

# 实践:
list=(value1 value2 value3);list=("${list[*]}" "value4");echo ${list[*]}  // value1 value2 value3 value4

数组元素的删除

使用unset与${list[*]}来删除数组某个元素

复制代码
list=(value1 value2 value3)
unset 'list[1]'
list=("${list[*]}")

# 实践,删除第二元素
list=(value1 value2 value3);unset "list[2]";list=("${list[*]}");echo ${list[*]} // value1  value3

示例

在初始化服务器环境时,需要安装很多软件包,这时可以先定义一个数组,再遍历数组并依次安装数据包

复制代码
#!/bin/bash

list=(vmi iotop fio htop)

for i in ${list[*]}
do
  apt install -y $i
done
相关推荐
梁bk32 分钟前
[Nginx]反向代理和负载均衡
运维·nginx·负载均衡
2401_826097625 小时前
JavaEE-Linux环境部署
java·linux·java-ee
(:满天星:)6 小时前
第31篇:块设备与字符设备管理深度解析(基于OpenEuler 24.03)
linux·运维·服务器·网络·centos
小陶来咯6 小时前
【仿muduo库实现并发服务器】Acceptor模块
运维·服务器
爱莉希雅&&&6 小时前
shell编程之awk命令详解
linux·服务器·git
笑稀了的野生俊6 小时前
在服务器中下载 HuggingFace 模型:终极指南
linux·服务器·python·bash·gpu算力
cui_hao_nan6 小时前
Docker后端部署
运维·docker·容器
渡我白衣7 小时前
Linux操作系统之文件(四):文件系统(上)
linux
ZZH1120KQ7 小时前
Linux系统安全及应用
linux·运维·系统安全
程序漫游人8 小时前
centos8.5安装jdk21详细安装教程
java·linux