9

I would like to fill an array automatically in bash like this one:

200 205 210 215 220 225 ... 4800

I tried with for like this:

for i in $(seq 200 5 4800);do
    array[$i-200]=$i;
done

Can you please help me?

4 Answers 4

16

You can use += operator:

for i in $(seq 200 5 4800); do
    array+=($i)
done
Sign up to request clarification or add additional context in comments.

Comments

6

You can simply:

array=( $( seq 200 5 4800 ) )

and you have your array ready.

Comments

6

Do it the way:

array=( {200..4800..5} )

Comments

0

You could have memory (or maximum length for a line) problems with those approaches, so here is another one:

# function that returns the value of the "array"
value () { # returns values of the virtual array for each index passed in parameter
   #you could add checks for non-integer, negative, etc
   while [ "$#" -gt 0 ]
   do
      #you could add checks for non-integer, negative, etc
      printf "$(( ($1 - 1) * 5 + 200 ))"
      shift
      [ "$#" -gt 0 ] && printf " "
   done 
}

Used like this:

the_prompt$ echo "5th value is : $( value 5 )"
5th value is :  220

the_prompt$ echo "6th and 9th values are : $( value 6 9 )"
6th and 9th values are :  225 240

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.