shell-数组访问

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了shell-数组访问相关的知识,希望对你有一定的参考价值。

下标访问

与其他语言(java,c++)一样,shell访问数组的具体元素是通过下标来指定的,格式为:
array[n]

array表示数组名,n为下标(n从0开始,所以访问元素n,下标为n-1)

#!/bin/bash
array=(1 3 4 5 6)
echo "访问第四个元素 ${array[3]}"
echo "访问第二个元素 ${array[1]}"

输出结果为:

统计数组长度

使用系统变量$#来统计长度,语法为:
${#array[@]}${#array[*]}

$*表示将结果以“参数1 参数2 ....”的形式将结果以一个字符串的形式返回。
$@表示将结果以“参数1” “参数2” “参数3” ....“参数n”的形式将结果逐个返回每个参数。实际差别不大

例如:

#!/bin/bash
array=(1 2 3 4 5 6 7 8 9 10)

echo ${#array[@]}

echo ${#array[*]}

输出结果为:

循环遍历数组

for循环(类C风格)来遍历数组

#!/bin/bash
array=(Mon Tue Wed Thu Fri Sat Sun)
j="${#array[*]}"
for ((i=0;i<$j;i++))
do
        echo "${array[$i]}"
done

输出结果为:

切片获取部分数组元素

所谓切片就是截取部分元素或某个元素的部分内容,其语法为:
${array[@]:起始位置:终止位置:}或${array[*]:起始位置:终止位置}
实例:

#!/bin/bash
program=(c c++ c# java python php perl go .net js shell)

echo "第三到第六的语言为:${program[*]:2:5}"

echo "第七到第十一的语言为:${program[@]:6:10}"

输出结果为:

替换数组元素

对数组元素进行替换,语法为:
${array[@]/old/new}
直接在切片的代码里面加吧

#!/bin/bash
program=(c c++ c# java python PHP perl go .net js shell)
echo "替换Java这个家伙 ${program[@]/java/VisualBasic}"
a=${program[@]/PHP/java}
b=(${program[@]/shell/Ruby})      #不加园括号就会变成字符串,加了得到的还是数组
echo
echo $a
echo
echo ${b[@]}

输出结果为:

以上是关于shell-数组访问的主要内容,如果未能解决你的问题,请参考以下文章

shell-数组访问

shell-数组访问

shell脚本中的数组常见使用方式

VSCode自定义代码片段—— 数组的响应式方法

VSCode自定义代码片段10—— 数组的响应式方法

如何访问json中的数组元素?