-1

I want to have a global array, each time I call the function cal on Main, I can add a new element on array arr_var

function cal () {
# Some operation
while true; do
  read -p "would you like asignment ? on ${var} " yn
  case $yn in
    [Yy]* ) arr_var+=$var
    [Nn]* ) break;;
     * ) echo "Please answer yes or no.";;
  esac
# Some operation
done
}

# Main
eval arr_var=()
cal "aa"
cal "bb"
cal "cc"

That I want

printf '%s\n' "${arr_var[@]}"
aa bb cc

but I get

aabbcc
ezceeaaaa
  • 19
  • 5

1 Answers1

1

Don't use eval for that...

arr_var=()

or

declare -ag arr_var

eval is evil : Why should eval be avoided in Bash, and what should I use instead?

And you have you answer in the comments :

var=()
var+=(a)
var+=(b)
declare -p var
Hizoka
  • 58
  • 6