一、数组概述
数组是Shell编程中非常有用的工具,它可以容纳多个值,并将它们以一种便于管理和操作的方式组织在一起。数组可以用于存储和管理文件名、用户输入,以及在Shell脚本中的其他数据。
在bash shell中,数组是一组有序的元素,每个元素都可以通过一个索引来引用。数组是通过在变量名称前面加上一个美元符号($)和花括号({})来声明的。
#!/bin/bash
# 定义数组
my_array=(apple orange banana pear lemon)
# 访问数组的元素
echo ${my_array[0]} # 输出apple
echo ${my_array[1]} # 输出orange
# 打印数组中所有的元素
echo ${my_array[@]} # 输出apple orange banana pear lemon
在上面的例子中,我们声明了一个名为my_array的数组,并用花括号来访问数组中的元素。
二、数组的基本操作
1. 获取数组元素数量
使用${#array_name[@]}可以获取数组中元素的数量:
#!/bin/bash
my_array=(apple orange banana pear lemon)
num=${#my_array[@]}
echo $num # 输出5
2. 向数组中添加元素
可以使用+=运算符向数组中添加元素:
#!/bin/bash
my_array=(apple orange banana pear lemon)
my_array+=(grape)
echo ${my_array[@]} # 输出apple orange banana pear lemon grape
3. 替换数组中的元素
可以使用变量名和元素索引来替换数组中的元素:
#!/bin/bash
my_array=(apple orange banana pear lemon)
my_array[2]=peach
echo ${my_array[@]} # 输出apple orange peach pear lemon
4. 删除数组元素
可以使用unset命令从数组中删除元素:
#!/bin/bash
my_array=(apple orange banana pear lemon)
unset my_array[2]
echo ${my_array[@]} # 输出apple orange pear lemon
三、循环遍历数组
可以使用for循环遍历数组,例如下面的例子:
#!/bin/bash
my_array=(apple orange banana pear lemon)
for fruit in ${my_array[@]}
do
echo $fruit
done
# 输出结果:
# apple
# orange
# banana
# pear
# lemon
四、应用案例:批量修改文件名
假设我们有一些文件名后面带有一些数字后缀,如file1.txt、file2.txt、file3.txt等等。现在我们想将所有文件名中的数字后缀全部删除。
使用数组可以轻松实现这个目标:
#!/bin/bash
files=(file1.txt file2.txt file3.txt)
for file in ${files[@]}
do
new_name=$(echo $file | sed 's/[0-9]*//g')
mv $file $new_name
done
上面的脚本将files数组中所有的文件名循环遍历一遍,每个文件名中的数字后缀都被删除,并重新赋予文件名。这段脚本可以让我们轻松地批量修改文件名。