shell bash数组

目录

定义方法1

 定义方法2

定义方法3

 格式化打印 printf

遍历数组 for循环


数组可以同时操作一堆变量,在运维中可以简单的看成同时给多个变量赋值。

在运维里学的数组非常少,平时在别的脚本能看懂就行。

  1. 定义数组 
  2. 查看  数组里的内容
  3. 遍历数组  把想要的数组取出来

在shell里定义数组比较常见的方法

定义方法1

Declare命令:(不光是定义数组的,可以定义变量,定义好多东西,用的特别少)

扫描二维码关注公众号,回复: 14541721 查看本文章

参数说明:

-a :定义为数组array

-f :定义为函数function

-i :定义为整数integer

-r :定义为只读

-x :定义为环境变量

# declare -a mm=(5 6 7 8)

# echo ${mm[2]}

显示结果为 7

declare -a mm=(5 6 7 8)     -a  后边是数组的名称(随便起 跟变量一样)  (5 6 7 8 )小括号里面的东西是数组元素是以空格隔开的语法是死的。有的编程语言是逗号。

下标从0开始,表示第一位,以此类推  单独的查看某一个数组元素的值 echo ${mm[2]}显示结果为 7

查看数组里所有的元素   

declare -p array

echo ${array[*]}

echo ${mm[*]}  (@和*一样 *表示所有)

查看数组长度

echo ${#abc[@]}  

查看数组元素:按下标从0开始

# echo ${array[0]}

1

获取数组元素的索引(下标):

# echo ${!array[*]}

0 1 2 3 4 5

普通的变量

a=1234   echo ${a}  

echo ${#a}    变量的长度

 定义方法2

hello=(1 2 3 4 5)

echo ${hello[4]}

echo ${hello[*]}

定义出来的数组和declare一样,用法也一样包括查看方法。

ls /   hello=(`ls /`)     echo ${hello[*]}   

定义方法3

刚刚两种方法直接把所有的数组元素的全部一次性的赋给这个数组。

 之前根本没有定义过叫test的数组,但是可以直接拿一个新的数组名称加上它的下标,直接给它赋值,当赋完第一个值之后,这个数组就被创建出来了。发现这个下标并不是连续的,去查的时候下标0没有,下标为1的有。也就是说在shell里数组元素不一定是连续的,可以把某一个数组元素放空。

数组成员不必一定要连贯或连续的

数组的一部分成员允许不被初始化

数组中空缺元素是允许的

没有初始化内容的数组元素打印空值(NULL值)

两个数组元素的和被赋值给另一个数组元素 (语法比较严格)

 

 

 格式化打印 printf

想让字符串展示出来是什么样子就是什么样

例如 打印hello world 打印出来想让他中间有个竖杠,hello前面后面加个A或者这个world所占的宽度为10。(这种格式可以在书写的时候就定义好)

[root@bogon ~]# echo 'AhelloA |     world'     这种输出格式可以用printf完成

printf ' ' hello      中间是格式后面是值

  printf 'A%sA |%10s\n' hello world    (%是字符串) %s表示第一个hello第二个表示world   10表示world的宽度 默认情况下是右对齐 如果是左对齐-10 但它依然占10位的宽度

 printf(专门用来打印想要展示格式的字符串 )

写100行格式化打印比较方便,因为前面传给%s的东西可以是变量

例如a=hello

printf 'A%sA |%10s\n' $a world        $a可以传变量,到时候可以做批量化的格式化操作,平时一行两行还不如直接写。

遍历数组 for循环

for循环可以遍历数组

猜你喜欢

转载自blog.csdn.net/weixin_53150440/article/details/127500256
今日推荐