The Linux shell is much more powerful in programming than Windows batch processing, both in loops and operations. Data types are not comparable. Here's a summary of some of the things that an individual does when it comes to working with arrays.
1. Array definitions
[Email protected] ~]$ a= (1 2 3 4 5)
[Email protected] ~]$ echo $a
1
A pair of parentheses indicates an array, and the elements of the array are separated by a "space" symbol.
2. Array reading and Assignment
[[email protected] ~]$ echo ${#a [@]}
5
Use ${#数组名 [@ or *]} to get the array length
[[email protected] ~]$ echo ${a[2]}
3
[[email protected] ~]$ echo ${a[*]}
1 2 3) 4 5
Using the ${array name [subscript]} subscript is starting from 0 subscript is: * or @ Get the entire array contents
[Email protected] ~]$ a[1]=100
[[email protected] ~]$ echo ${a[*]}
1 100 3) 4 5
[Email protected] ~]$ a[5]=100
[[email protected] ~]$ echo ${a[*]}
1 100 3 4 5 100
It can be referenced directly by the array name [subscript], and if the subscript does not exist, a new array element is added automatically
[Email protected] ~]$ a= (1 2 3 4 5)
[Email protected] ~]$ unset a
[[email protected] ~]$ echo ${a[*]}
[Email protected] ~]$ a= (1 2 3 4 5)
[Email protected] ~]$ unset a[1]
[[email protected] ~]$ echo ${a[*]}
1 3 4 5
[[email protected] ~]$ echo ${#a [*]}
4
Directly through: unset array [subscript] can clear the corresponding element, without subscript, clear the entire data.
3. Special use
[Email protected] ~]$ a= (1 2 3 4 5)
[[email protected] ~]$ echo ${a[@]:0:3}
1 2 3
[[email protected] ~]$ echo ${a[@]:1:4}
2 3 4 5
[[email protected] ~]$ c= (${a[@]:1:4})
[[email protected] ~]$ echo ${#c [@]}
4
[[email protected] ~]$ echo ${c[*]}
2 3 4 5
Directly through the ${array name [@ or *]: Start position: Length} Slice the original array, return is a string, the middle with "space" separate, so if you add "()", will get the slice array, the above example: C is a new data.
[Email protected] ~]$ a= (1 2 3 4 5)
[[email protected] ~]$ echo ${a[@]/3/100}
1 2 100) 4 5
[[email protected] ~]$ echo ${a[@]}
1 2 3) 4 5
[[email protected] ~]$ a= (${a[@]/3/100})
[[email protected] ~]$ echo ${a[@]}
1 2 100) 4 5
The call method is: ${array name [@ or *]/find character/substitution character} This operation will not change the original array contents, if you need to modify, you can see the above example, redefine the data.
Linux shell array creation and usage tips