shell 数组操作

1. 定义数组:

  var_array=(one two three four five)

2.常用操作

  获取数组长度: ${#var_array[@]}

  获取所有数组元素:  ${var_array[@]} or  ${var_array[*]} 

  获取第一个数组元素:${var_array[0]}   数组下标从 0 开始。

  数组元素字符替换:${var_array[@]/x/y}  #最少替换,用y替换x

  数组元素字符替换:${var_array[@]//x/y}  #最多替换,用y替换x

  数组元素删除: "#"  每个元素,从左向右进行最短匹配  ,"##" 最长匹配

  数组元素删除: "%"  每个元素,从右向左进行最短匹配  ,"%%" 最长匹配

例子:

#!/bin/bash


## 定义一个空数组
var_array=()

## 数组赋值,数组下标从 0 开始
var_array=(china beijing shanghai sshenzhen nanjingg)

## 打印全部数组元素 ${var_array[@]} 或者 ${var_array[×]}
echo "数组元素是:${var_array[@]}"

## 打印数组元素个数
echo "数组总数是:${#var_array[@]}"

## 数组遍历
for ((i=0;i < ${#var_array[@]}; i++))
do
echo "第${i}个数组元素是: ${var_array[i]}"
done

## 数组切片
echo "打印第二个元素之后的所有元素:"${var_array[@]:1}""
echo "打印第一个元素到第三个元素:${var_array[@]:0:3}"
echo "打印倒数第二个元素开始打印,打印2个元素:${var_array[@]:(-2):2}"

## 根据现有数组,得到一个新数据
new_var_array=()
new_var_array=${var_array[@]:0:3}
echo "新数组是:${new_var_array[@]}"


## 数据替换
## ${array[@]/x/y}     最小匹配替换,每个元素只替换一次
## ${array[@]//x/y}    最大匹配替换,每个元素可替换多次

echo "将i替换xo,一个元素只替换一次:${var_array[@]/i/xo}"
echo "将i替换xo,一个元素替换多次次:${var_array[@]//i/xo}"
echo "将i替换空,一个元素替换多次次:${var_array[@]//i/}"

## 数组删除
## "#"  每个元素,从左向右进行最短匹配
## "##" 每个元素,从左向右进行最长匹配
## "%"  每个元素,从右向左进行最短匹配
## "%%" 每个元素,从右向左进行最长匹配

echo "将s开头的字符,单个删除:${var_array[@]#s*}"
echo "将s开头的字符,全部删除:${var_array[@]##s*}"
echo "将s开头的字符,全部删除:${var_array[@]%*g}"
echo "将s开头的字符,全部删除:${var_array[@]%%*g}"
View Code

结果截图:

原文地址:https://www.cnblogs.com/kimbo/p/7055257.html