Create array in bash dynamically

bash declare array
how to take array input in shell script
bash create array of directories
bash array of characters
bash add to array
bash array of strings
bash concatenate arrays
bash multi-line array

I would like to create and fill an array dynamically but it doesn't work like this:

i=0
while true; do
    read input
    field[$i]=$input
    ((i++))
    echo {$field[$i]}  
done

The assignment is fine; the lookup is wrong:

echo "${field[$i]}"

Dynamically create array in bash with variables as array name , eval expects a string as the argument. You can't use ( unquoted, it has a special meaning in shell. i=aaa eval "$i=(1 2)" # Use a string, $i will expand in double� Define An Array in Bash You have two ways to create a new array in bash script. The first one is to use declare command to define an Array. This command will define an associative array named test_array.

Try something like this:

#! /bin/bash
field=()
while read -r input ; do
    field+=("$input")
done
echo Num items: ${#field[@]}
echo Data: ${field[@]}

It stops reading when no more input is available (end of file, ^D in the keyboard), then prints the number of elements read and the whole array.

The Ultimate Bash Array Tutorial with 15 Examples, In bash, array is created automatically when a variable is used in the format / bin/bash $cat arraymanip.sh declare -a Unix=('Debian' 'Red hat'� Create indexed or associative arrays by using declare. Declare, in bash, it's used to set variables and attributes. In this case, since we provided the -a option, an indexed array has been created with the "my_array" name. This, as already said, it's the only way to create associative arrays in bash.

i= field=()
while :; do
    read -r 'field[i++]'
done

Is one way. mapfile is another. Or any of these. However what you've posted is valid.

Getting Bashed by Dynamic Arrays : Ludvik Jerabek, The script would use curl to make web-services calls, xmllint for XML parsing, and some other commonly used Linux tools such as grep. This� I'm trying to write a script in bash that will create an array that is the size of the number of arguments I give it. I'm expecting. user@host:~/sandbox# ./script.sh alpha bravo charlie alpha bravo charlie or . user@host:~/sandbox# ./script.sh 23425 jasson orange green verb noun coffee 23425 jasson orange green verb noun coffee So, the goal is

Assigning values for a dynamic array for an input, I am facing a strange error while creating posix threads: Given below are two snippets of code, the first one works whereas the second one gives a garbage value� So the while loop would be populating a copy of the results array, and when the while loop completes, that copy disappears. Edited to add: If that is the problem, then as glenn jackman points out in a comment, you can fix it by using process substitution instead:

set array name dynamically - UNIX and Linux Forums, Hi, I am trying to name a set of arrays dynamically named as @array_\\$i (The \\$i will mean that I obtain a set of arrays called: Tagged: array, bash, shell scripts, solved, strings, syntax, variables My idea is to do as follows I create array. Syntax is as follows. array= ( $ (command) ) By default the contents in the output of command separated by white spaces are plugged into array as individual elements. The following script list the contents of a directory, which are files with 755 permissions.

How to expand a loop iterating over an array dynamically in BASH , It doesn't work with a for in "${arr[@]}" loop because "${arr[@]}" is evaluated immediately. That is, even though you add elements to it during the loop, the� To initialize a Bash Array, use assignment operator =, and enclose all the elements inside braces (). The syntax to initialize a bash array is ARRAY_NAME= (ELEMENT_1 ELEMENT_2 ELEMENT _N) Note that there has to be no space around the assignment operator =.

Comments
  • What is your actual problem? Aside from some minor issues, your code is fine.
  • It works like a simple variable. If I the input is test, it echo: {test[0]}
  • I don't see any echo there. You just have an infinite loop that appends an array and does nothing with it. Yes expanding "$test" is always equivalent to "${test[0]}" (even if test isn't an array).
  • I edited the post. I added echo {$field[$i]}
  • I saw the error is the $ symbol after the bracket