简体   繁体   中英

Bash: How to declare empty array, and then add variables to it

I was hoping a kind person more intelligent than me could help me out here.

I am working on a Bash script, and in it there is a for loop that will go around an unknown/undefined number of times.

Now, in this for loop, there will be a value assigned to a variable. Let's call this variabe: $var1

Each time the loop goes (and I will never know how many times it goes), I would like to assign the value inside $var1 to an array, slowly building up the array as it goes. Let's call the array $arr

This is what I have so far:

for i in $( seq 0 $unknown ); do
    ...
    some commands that will make $var1 change...
    ...

    arr=("${arr[@]}" "$var1")
done

However, when I want to echo or use the values in the array $arr , I get no results

Perhaps someone will kindly help me in the right direction?

I would really appreciate it so much.

You declare and add to a bash array as follows:

declare -a  arr       # or arr=()
arr+=("item1")
arr+=("item2")

Simple as that.

After executing that code, the following assertions (among others) are true:

${arr[@]}  == item1 item2
${#arr[@]} == 2
${arr[1]}  == item2

In terms of the code you provided, you would use:

declare -a arr
for i in $( seq 0 $unknown ); do
    ...
    some commands that will make $var1 change...
    ...

    arr+=("$var1")
done

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM