You want the output of some program or script to be put into an array.
1 2 3 4 5 6 7 8 9 10 11 12 |
#!/usr/bin/env bash # cookbook filename: parseViaArray # # find the file size # use an array to parse the ls -l output into words LSL=$(ls -ld $1) declare -a MYRA MYRA=($LSL) echo the file $1 is ${MYRA[4]} bytes. |
In our example, we take the output from the ls -l command and parse the words by putting them into an array.
Then we can just refer to each array element to get at each word.
The typical output from the ls -l command looks like this (yours may vary due to locale):
1 |
-rw-r--r-- 1 albing users 113 2006-10-10 23:33 mystuff.txt |
Arrays are easy to initialize if you know the values as you write the script.
The format is simple.
We begin by declaring the variable to be an array, and then we assign it values:
1 2 |
declare -a MYRA MYRA=(first second third home) |
The same can be done by using a variable inside those parentheses.
Just be sure not to use quotes around the variable.
Writing MYRA=$(“$LSL”) will put the entire string into the first argument, since it is all contained as one quoted string.
Then ${MYRA[0]} will be the only array element, and it will contain the entire string, which is not what you wanted.
We also could have shortened this script by combining the steps, and it would look
1 2 |
declare -a MYRA MYRA=($(ls -ld $1)) |
If you want to know how many elements you have in your new array, just reference the variable ${#MYRA[*]} or ${#MYRA[@]}, either of which is a lot of special characters to type.