【发布时间】:2010-06-10 13:41:09
【问题描述】:
我想从一个数组中显示一长串字符串。
现在,我的脚本运行一个 for 循环,将每个值回显到标准输出:
for value in ${values[@]}
do
echo $value
done
是的,这很丑!而且一栏列表也很长...
我想知道是否可以找到一个命令或内置命令来帮助我在列中显示所有这些值,就像列出目录 (ls -C) 时默认情况下的 ls 命令一样。
[更新]
column 无法显示格式正确的列让我不知所措,这里有更多信息:
价值观:
$ 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)
注意前两位数字作为索引,最后一位指示字符串长度以便于阅读。
命令:echo " ${values[@]/%/$'\n'}" | column
结果:bad columns http://tychostudios.ch/multipurpose/bad_columns.png
出了点问题……
【问题讨论】:
-
column似乎在努力解决您的输入只有一列并且某些行比制表位更窄的事实。echo " ${values[@]/%/$' \n'}" | column似乎有效 -
@Johnsyweb:我必须在
\n之前添加另一个空格才能使其与该组数据一起使用。但奇怪的是,输出仅在 3 列上。虽然有足够的空间容纳 5 列。 -
@Arko:SO.com 在
\n之前吞下了我的双倍空格!echo " ${values[@]/%/$' \n'}" | column -c 120为我提供了五列。 -
再一次,换行前我的空间减半了!
-
@Johnsyweb:事实上,SO 并没有吞噬你的空间。它是一项 HTML 功能,默认情况下将多个空格呈现为一个。看看源头,它们就在那里。