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
相关推荐
卑微的码蚁2 分钟前
服务器相关问题
运维·服务器
博洋科技4 分钟前
网站建设的服务器该如何选择?
运维·服务器·网站建设·保定响应式网站建设·保定h5网站建设·保定网站建设
人类群星闪耀时9 分钟前
服务器管理:从零开始的服务器安装与配置指南
运维·服务器
NiNg_1_2341 小时前
使用Docker Compose一键部署
运维·docker·容器
萠哥啥都行1 小时前
Linux安装Docker以及Docker入门操作
运维·docker·容器
王哲晓1 小时前
Linux通过yum安装Docker
java·linux·docker
小江湖19941 小时前
元数据保护者,Caesium压缩不丢重要信息
运维·学习·软件需求·改行学it
gopher95111 小时前
linux驱动开发-中断子系统
linux·运维·驱动开发
码哝小鱼1 小时前
firewalld封禁IP或IP段
linux·网络
鼠鼠龙年发大财1 小时前
【x**3专享】安装SSH、XFTP、XShell、ARM Linux
linux·arm开发·ssh