Print array elements on separate lines in Bash? Print array elements on separate lines in Bash? bash bash

Print array elements on separate lines in Bash?


Try doing this :

$ printf '%s\n' "${my_array[@]}"

The difference between $@ and $*:

  • Unquoted, the results are unspecified. In Bash, both expand to separate argsand then wordsplit and globbed.

  • Quoted, "$@" expands each element as a separate argument, while "$*"expands to the args merged into one argument: "$1c$2c..." (where c isthe first char of IFS).

You almost always want "$@". Same goes for "${arr[@]}".

Always quote them!


Just quote the argument to echo:

( IFS=$'\n'; echo "${my_array[*]}" )

the sub shell helps restoring the IFS after use


Using for:

for each in "${alpha[@]}"do  echo "$each"done

Using history; note this will fail if your values contain !:

history -p "${alpha[@]}"

Using basename; note this will fail if your values contain /:

basename -a "${alpha[@]}"

Using shuf; note that results might not come out in order:

shuf -e "${alpha[@]}"