美文网首页
Linux——在shell脚本中定义和使用数组

Linux——在shell脚本中定义和使用数组

作者: moutory | 来源:发表于2023-06-17 22:11 被阅读0次

前言

我们在写shell脚本的时候,有时候会需要对多台服务器,或者相近的几个资源做同样的操作。一般情况下我们会考虑使用for循环来解决这些问题,而作为for循环的资源对象,我们一般会放在数组中进行操作。在本篇文章中,我们将对shell脚本中数组的定义和使用进行介绍。

一、数组的定义

数组的定义有三种方式

语法一:使用( )进行包裹(常用)
arr=(aa bb cc)
语法二:使用()+[]进行定义(少用)

语法二的优点是可以顺便定义元素的位置,但写法相对比较繁琐一点。

arr=([0]=aa [1]=bb [2]=cc)
语法三:手动定义元素值

这种语法的优点是可以逐个定义元素的位置和内容

arr[0]=aa
arr[1]=bb
arr[2]=cc
语法四:引入外部的数据作为数组的内容

需要结合$()命令来将命令执行结果作为数组的内容

arr=$(ls /tmp/)

二、数组的操作

(一)获取数组中的某个元素的值

语法:${数组变量名[索引坐标]}

案例:
#!/bin/bash

echo "====================="
arr=(aa bb cc)
echo "${arr[1]}"
echo "====================="

结果如下:

[root@10-60-159-92 testssh]# sh test.sh
=====================
bb
=====================
(二)获取数组中所有元素

这个语法能够和for循环配合,完成我们操作数组元素的操作。

语法:${数组变量名[@]}或者${数组变量名[*]}

案例:
[root@10-60-159-92 testssh]# cat test.sh
#!/bin/bash

echo "====================="
arr=(aa bb cc)
echo "${arr[*]}"
echo "${arr[@]}"
echo "====================="
[root@10-60-159-92 testssh]# sh test.sh
=====================
aa bb cc
aa bb cc
element is aa
element is bb
element is cc
=====================
(三)获取数组中的元素个数

语法:${#数组变量名[@]}或者${#数组变量名[*]}

案例:
#!/bin/bash

echo "====================="
arr=(aa bb cc)
echo "${#arr[*]}"
echo "${#arr[@]}"
echo "====================="

结果如下:

[root@10-60-159-92 testssh]# sh test.sh
=====================
3
3
=====================
(四)数组(元素)的删除

语法:unset 数组变量名 或者 unset 数组变量名[索引下标]

案例:
#!/bin/bash

echo "====================="
arr=(aa bb cc)
unset arr[1]
echo "${arr[@]}"
unset arr
echo "${arr[@]}"
echo "====================="

结果如下,可以看到原坐标索引为1的元素已经被删除了。

[root@10-60-159-92 testssh]# sh test.sh
=====================
aa cc

=====================

(五)数组元素的截取和替换

元素截取语法:${数组变量名[@]:起始索引下标:结束索引下标}
元素替换语法:${数组变量名[@]/旧元素值/新元素值}

案例:
#!/bin/bash

echo "====================="
arr=(aa bb cc dd)

echo "${arr[@]:1:2}"
echo "${arr[@]/bb/pp}"
echo "${arr[@]}"
echo "====================="

执行结果如下,我们可以发现这两个命令并不会改变原有的数组,而是会生成新的数组

[root@10-60-159-92 testssh]# sh test.sh
=====================
bb cc
aa pp cc dd
aa bb cc dd
=====================
(六)遍历数组所有元素

遍历数组中的元素,一般我们会结合for命令来实现。常见的实现方式有两种,for infor (( ))

方法一:for in
#!/bin/bash
echo "====================="
arr=(aa bb cc dd)

for var in ${arr[@]}
do
    echo "element is $var"
done
echo "====================="
方法二:for (( ))
#!/bin/bash

echo "====================="
arr=(aa bb cc dd)
for ((i=0;i<${#arr[@]};i++))
do
    echo "element is ${arr[i]}"
done
echo "====================="

PS:需要注意,上述的${#arr[@]}换成${#arr[*]}也是同样适用的~

相关文章

  • 13. Shell 函数

    函数定义 linux shell 可以用户定义函数,然后在shell脚本中可以随便调用。shell中函数的定义格式...

  • Shell 函数

    linux shell 可以用户定义函数,然后在shell脚本中可以随便调用。 shell中函数的定义格式如下: ...

  • Shell 函数

    linux shell 可以用户定义函数,然后在shell脚本中可以随便调用。 shell中函数的定义格式如下: ...

  • Shell 函数

    linux shell 可以用户定义函数,然后在shell脚本中可以随便调用。 shell中函数的定义格式如下: ...

  • Shell 函数

    linux shell 可以用户定义函数,然后在shell脚本中可以随便调用。shell中函数的定义格式如下: 说...

  • 九、Shell 函数

    linux shell 可以用户定义函数,然后在shell脚本中可以随便调用。shell中函数的定义格式如下: 说...

  • shell(六)

    Shell 函数 linux shell 可以用户定义函数,然后在shell脚本中可以随便调用。shell中函数的...

  • Shell脚本函数的定义和传参

    linux shell 可以用户定义函数,然后在shell脚本中可以随便调用。项目开发中利用Shell脚本可以很方...

  • Shell 数组与数学运算

    参考书籍 Linux shell 脚本攻略 数组和关联数组 数组分类普通数组:只能使用整数作为数组索引。关联数组:...

  • Linux - Bash - Shell 函数

    linux shell 可以用户定义函数,然后在shell脚本中可以随便调用。 Shell 函数 注意:上面的fu...

网友评论

      本文标题:Linux——在shell脚本中定义和使用数组

      本文链接:https://www.haomeiwen.com/subject/ryodydtx.html