[内容] Linux 数组

内容一:定义数组

1.1 定义数组全部的值

1.1.1 定义数组全部的值 (值里没有空格)
1.1.1.1 在命令行中定义数组的值 (值里没有空格)
# <array_name>=(<value0> <value1> <value2> <value3> <value4>)

或者:

# <array_name>=(\
<value0>\
<value1>\
<value2>\
<value3>\
<value4>\
)
1.1.1.2 在脚本中定义数组的值 (值里没有空格)
<array_name>=(
<value0>
<value1>
<value2>
<value3>
<value4>
)

或者:

<array_name>[0]=<value0>
<array_name>[1]=<value1>
<array_name>[2]=<value2>
<array_name>[3]=<value3>
<array_name>[4]=<value4>
1.1.2 定义数组全部的值 (值里有空格)
1.1.2.1 在命令行中定义数组的值 (值里有空格)
# <array_name>=('<value0-part1> <value0-part2>' '<value1-part1> <value1-part2>' '<value2-part1> <value2-part2>' '<value3-part1> <value3-part2>' '<value4-part1> <value4-part2>')

或者:

# <array_name>=(\
'<value0-part0> <value0-part0>'\
'<value1-part1> <value1-part1>'\
'<value2-part2> <value2-part2>'\
'<value3-part3> <value3-part3>'\
'<value4-part4> <value4-part4>'\
)
1.1.2.2 在脚本中定义数组的值 (值里有空格)
<array_name>=(
"<value0-part1> <value0-part2>"
"<value1-part1> <value1-part2>"
"<value2-part1> <value2-part2>"
"<value3-part1> <value3-part2>"
"<value4-part1> <value4-part2>"
)

或者:

<array_name>[0]="<value0-part1> <value0-part2>"
<array_name>[1]="<value1-part1> <value1-part2>"
<array_name>[2]="<value2-part1> <value2-part2>"
<array_name>[3]="<value3-part1> <value3-part2>"
<array_name>[4]="<value4-part1> <value4-part2>"

1.2 定义数组某个指定位置元素的值

1.2.1 在命令行定义数组某个指定位置元素的值
# <array_name>[0]=<value0>

(补充:这里以定义数组第 1 个元素位置的值为例)

1.2.2 在脚本定义数组某个指定位置元素的值
<array_name>[0]=<value0>

(补充:这里以定义数组第 1 个元素位置的值为例)

1.3 给数组追加新的元素

# <array_name>+=(<the value of the new element> <the value of the new element> <the value of the new element> ......)

或者:

# <array_name>+=('<the value of the new element>' '<the value of the new element>' '<the value of the new element>' ......)

(补充:这里每个空格间隔 1 个新的元素,元素的位置依次递增)

内容二:显示数组

2.1 显示数组全部的值

# echo ${<array_name>[*]}

或者:

# echo ${<array_name>[@]}

2.2 显示数组元素的个数

# echo ${#<array_name>[*]}

或者:

# echo ${#<array_name>[@]}

2.3 显示数组最长单个元素的长度

# echo ${#<array_name>[n]}

2.4 显示数组单个元素的值

# echo ${<array_name>[1]}

(补充:这里以显示数组第 2 个元素的值为例)

2.5 显示数组位置经过计算得出的元素的值

# echo ${command_array[2 + 1]} 

(补充:这里以显示数组第 2 + 1 = 3 个,也就是第 3 个元素的值为例)

2.6 显示数组位置经过计算得出的元素的值,并在计算过程中使用变量

# echo ${command_array[(2 * $i) + 1]}

(补充:这里以显示数组第 2 乘以变量 i 的值再加上 1 的位置的元素的值为例)

2.7 显示数组单个元素的值,并在前面加前缀

# echo "First Index: ${<array_name>[0]}"

(补充:这里以显示数组第 1 个元素的值,并在前面加上 First Index: 前缀为例)

内容三:数组的使用案例

3.1 使用脚本手动创建数组

3.1.1 创建使用数组的脚本
# vim test.sh

创建以下内容:

#!/bin/bash
  
NAME[0]='a1'
NAME[1]='b2'
NAME[2]='c3'
NAME[3]='d4'
NAME[4]='e5'

echo "first one: ${NAME[0]}"
echo "${NAME[*]}"

(补充:这里以创建名为 test.sh 显示数组的第 1 个值和所有值,并在第 1 个值前面添加 first one 前缀的脚本为例)

3.1.2 执行使用数组的脚本
# . test.sh 
first one: a1
a1 b2 c3 d4 e5

(补充:这里以执行名为 test.sh 的脚本,显示第 1 行是 first one: a1 第 2 行是 a1 b2 c3 d4 e5 的结果为例)

3.2 使用脚本手动创建数组 (并显示数组里的序列和所有值)

3.2.1 创建使用数组的脚本
# vim test.sh

创建以下内容:

#!/bin/bash
  
NAME[0]='a1'
NAME[1]='b2'
NAME[2]='c3'
NAME[3]='d4'
NAME[4]='e5'

echo "${!NAME[@]}"
echo "${NAME[@]}"

(补充:这里以创建名为 test.sh 显示数组的全部序列和所有值为例)

3.2.2 执行使用数组的脚本
# . test.sh 
0 1 2 3 4
a1 b2 c3 d4 e5

(补充:这里以执行名为 test.sh 的脚本,显示第 1 行是数组的全部序列,第 2 行是所有值为例)

3.3 使用脚本自动创建数组

3.3.1 创建使用数组的脚本
# vim test.sh

创建以下内容:

#!/bin/bash
Variaty=`echo a;echo b;echo c`
Number=0
Array=(0 1 2)

for i in $(echo $Variaty)
do
    Array[$Number]="$i"
    let Number++
done

The_first_value=${Array[0]}
The_second_value=${Array[1]}
The_third_value=${Array[2]}

echo $The_first_value
echo $The_second_value
echo $The_third_value

(补充:这里以创建名为 test.sh 显示全部三个数组的值为例)

3.3.2 执行使用数组的脚本
# . test.sh

(补充:这里以执行名为 test.sh 的脚本为例)