How to output an array's content in columns in BASH
arrays, bash, list
Solution
You could pipe your output to `column`.
`column` seems to struggle with some data in a single-column input being narrower than a tabstop (8 characters).
Using `printf` within a `for`-loop to pad values to 8 characters seems to do the trick:
for value in "${values[@]}"; do
printf "%-8s\n" "${value}"
done | column
Problem
I wanted to display a long list of strings from an array. Right now, my script run through a for loop echoing each value to the standard output: ``` for value in ${values[@]} do echo $value done ``` Yeah, that's pretty ugly! And the one column listing is pretty long too... I was wondering if i can find a command or builtin helping me to display all those values in columns, like the `ls` command does by default when listing a directory (`ls -C`). [Update] Losing my brain with `column` not displaying properly formatted columns, here's more info: The values: ``` $ values=( 01----7 02----7 03-----8 04----7 05-----8 06-----8 07-----8 08-----8 09---6 10----7 11----7 12----7 13----7 14-----8 15-----8 16----7 17----7 18---6 19-----8 20-----8 21-----8) ``` Notice the first two digits as an index and the last one indicating the string length for readability. The command: `echo " ${values[@]/%/$'\n'}" | column` The result: bad columns http://tychostudios.ch/multipurpose/bad_columns.png Something is going wrong...