次のスクリプトは、項目の番号付きリストを出力します。番号付き項目の複数の列に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
私はより多くのデータが1ページに収まるように、複数の列にそのリストを分割したいと思います。列echo "$((i++))) $m" | column
にパイプするだけで、列が1つだけ表示され、今度はすべての行が0)
で始まり、次に項目がリストされます。
How to output an array's content in columns in BASHで与えられた答えは、出力の複数の列を作る限り動作します。
menu=($(ls $HOME))
echo " ${menu[@]/%/$'\n'}" | column
しかし、アレイは数だけ出力が最初0
であるとして番号付けのために動作しないi=0; echo "$((i++))"
bashの演算方法を用いて、引用されている。なぜなら
私の質問は、配列のデータを複数の列の番号付きリストに出力するにはどうすればいいですか?
あなたはpr
に単一の列とパイプそれを、それをプリントアウトについて、どのように
0) item 4) item 8) item
1) item 5) item 9) item
2) item 6) item 10) item
3) item 7) item 11) item
あなたのコードは複数の問題があります。 [ls'(http://mywiki.wooledge.org/ParsingLs)と[quote everything](/ questions/10067266/when-to-wrap-around-a-variable)を使用しないでください。とにかくあなたが実際に単に '$ HOME"/* 'のファイルを選択しているように見えます。 – tripleee
あなたが正しいことを知っています。この特定の例では、ファイル名に空白やメタキャラクタが含まれていないことは確かです。 –