変数を含むbashスクリプトのテキストをエコーし、その変数をパディングして、残りのテキストを揃えるために常に適切なスペースを右側に配置したいと思います。
これが私が欲しいものの例です:
Echoing random number 1080 [ OK ]
Echoing random number 443 [ OK ]
Echoing random number 34842 [ OK ]
数値の長さはさまざまです(おそらく5桁または6桁以下)。
私はprintfがこれを行うことができ、次のことを行うことで変数を右揃えできることを知っています:
printf "Echoing random number %5s [ OK ]" $Rand_NUM
ただし、これによりテキストは次のようにフォーマットされます。
Echoing random number 1080 [ OK ]
Echoing random number 443 [ OK ]
Echoing random number 34842 [ OK ]
そしてもちろん、スペースでエコーするだけでは機能しません:
echo "Echoing random number ${Rand_NUM} [ OK ]"
これを生成します:
Echoing random number 1080 [ OK ]
Echoing random number 443 [ OK ]
Echoing random number 34842 [ OK ]
最初の例のようにテキストを印刷する方法はありますか?
使用する -
フィールドを左揃えにします。
printf "Echoing random number %-5s [ OK ]" $Rand_NUM
あるいは、Red Hat Linuxシステムを使用している場合、緑色のOKプロンプトと赤色のFAILEDプロンプト(起動時に表示されるプロンプト)を出力する定義済みの機能があります。
#!/bin/bash
. /etc/init.d/functions
echo -n "Frobbing widget:"
frob_widget && echo_success || echo_failure
echo
すべての行を1つのvarまたはテキストファイルに収集し、column
コマンドでパイプ処理します。だからこれ(私のサンプルファイル/tmp/columns.txt
)
Echoing random number 1080 [ OK ]
Echoing random number 44332356 [ OK ]
Echoing random number 34842 [ OK ]
Echoing random number 342 [ OK ]
これになった
Echoing random number 1080 [ OK ]
Echoing random number 44332356 [ OK ]
Echoing random number 34842 [ OK ]
Echoing random number 342 [ OK ]
コマンド例:cat /tmp/columns.txt | column -t