以下脚本输出项目的编号列表。如何将bash数组输出到多列编号项目
#!/bin/bash
menu=($(ls ${HOME}))
i=0
for m in ${menu[@]}
do
echo "$((i++))) $m"
done
结果:
0) item
1) item
2) item
3) item
我想使更多的数据在一个页面上符合该列表分割成多个列。仅管道到echo "$((i++))) $m" | column
列仍然会导致只有一列,现在每行以0)
开头,后面跟着列出的项目。
在How to output an array's content in columns in BASH中给出的答案尽可能地产生多列输出。
menu=($(ls $HOME))
echo " ${menu[@]/%/$'\n'}" | column
但是因为阵列是引用,使用的是bash算术方法i=0; echo "$((i++))"
不进行编号作为唯一的号码输出工作是第一0
。
我的问题是:如何将数据中的数据输出到多列的编号列表中?
0) item 4) item 8) item
1) item 5) item 9) item
2) item 6) item 10) item
3) item 7) item 11) item
你的代码有多种问题,当涉及到含有空格或shell转义字符的文件名。 [不要使用'ls'](http://mywiki.wooledge.org/ParsingLs)和[引用所有内容](/ questions/10067266/when-to-wrap-quotes-around-a-variable)。无论如何,看起来你实际上只是在“$ HOME”/ *' – tripleee
中选择文件。我知道你是对的。在这个特定的例子中,虽然我确信没有任何文件名包含任何空格或元字符。 –