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

相关推荐

  1. shell关于使用

    2024-07-15 10:24:02       24 阅读
  2. Linux--shell编程有关详细内容

    2024-07-15 10:24:02       46 阅读
  3. js关于方法

    2024-07-15 10:24:02       40 阅读
  4. C语言和指针关系

    2024-07-15 10:24:02       26 阅读
  5. c# 使用

    2024-07-15 10:24:02       33 阅读
  6. c#使用

    2024-07-15 10:24:02       29 阅读
  7. C语言初始化

    2024-07-15 10:24:02       62 阅读
  8. Js实用语法

    2024-07-15 10:24:02       52 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-15 10:24:02       70 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-15 10:24:02       74 阅读
  3. 在Django里面运行非项目文件

    2024-07-15 10:24:02       62 阅读
  4. Python语言-面向对象

    2024-07-15 10:24:02       72 阅读

热门阅读

  1. 聊聊自动驾驶中的LiDAR和Radar

    2024-07-15 10:24:02       20 阅读
  2. python安全脚本开发简单思路

    2024-07-15 10:24:02       26 阅读
  3. 使用C++和libcurl下载指定的文件

    2024-07-15 10:24:02       26 阅读
  4. 微信小程序开发入门指南

    2024-07-15 10:24:02       21 阅读
  5. 等保测评全流程详解

    2024-07-15 10:24:02       20 阅读
  6. Writing Bazel rules: data and runfiles

    2024-07-15 10:24:02       21 阅读