以下腳本輸出項目的編號列表。如何將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
中選擇文件。我知道你是對的。在這個特定的例子中,雖然我確信沒有任何文件名包含任何空格或元字符。 –