This tutorial is a brief introduction to arrays in bash. Data Scientists are familiar with arrays, in R, a simple array is called “vector” and in Python is called “list”.
There are many different ways to create arrays in Bash, but in this example, we will show you one of the many by creating a simple array called “mynames” containing the elements “John”, “Bob” and “Maria”.
declare -a mynames=(John Bob Maria)
Note that each element is white space separated, the elements are within a parenthesis and there is no extra space around the equal sign.
The indexing of the arrays in bash starts from 0. If we want to retrieve the 2nd element of the array, which corresponds to index 1, we can run:
echo ${mynames[1]}
Bob
Thus, we can get each element by entering its index within the square brackets.
If we want to print all the elements, we have to add the “@” within the square brackets, like:
echo ${mynames[@]}
John Bob Maria
Keep in mind that we can get the same results by using the “*” instead of the “@”.
echo ${mynames[*]}
John Bob Maria
We can add an element by specifying the index and the element. For example, let’s add “George” to the array.
mynames[3]=George echo ${mynames[@]}
John Bob Maria George
We can append one or more elements to the array using the “+=”, like:
mynames+=(Jim Helen) echo ${mynames[@]}
John Bob Maria George Jim Helen
We can update the content of the elements by overwriting them, like:
mynames[3]=Jason echo ${mynames[@]}
John Bob Maria Jason Jim Helen
As we can see, we replaced “George”, with “Jason”.
We can use the “unset” command to delete an element of an array. Let’s say that we want to remove “Helen”.
unset mynames[5] echo ${mynames[@]}
John Bob Maria Jason Jim
We can get the length of an array, i.e. the number of elements, by running:
echo ${#mynames[@]}
5
As we expected, the length of the array is 5.
We can iterate over an array by running:
for i in ${mynames[*]} do echo $i done
We can delete the array by running:
unset mynames
Published 761 days ago
Login to Continue, We will bring you back to this content 0