茶トラ猫エンジニア

フリーランスとして働く、先が見えないエンジニアのメモ帳

kshのechoで改行を制御する

ksh の echo で改行しないように -n オプションを使ってみましたが、どうやら -n オプションはサポートされていないようです。

例えばスクリプトで処理を実行して、処理が完了したら OK を表示したいようなプログラムはどうやって書けばいいでしょうか。

コンソール表示がしたい

例えば、インストールなどによくある下記のようなコンソール表示です。

START |#
↓
START |#####
↓
START |################################### | OK

よくよく調べてみると、\c を使うことで改行を制御できるようです。

エスケープシーケンスが用意されているのですね。

これで問題解決ですが、間違って -n 書いちゃいそうですね(笑)

他のエスケープシーケンス

他のエスケープシーケンスも一部紹介しておきます。

\a : 警告文字
\b : バックスペース
\c : 復帰改行なしで行を出力
\n : 復帰改行
\t : タブ
\\ : バックスラッシュ

FreeBSD の csh の実行例と合わせて、ksh の実行例も書いておきます。

コンソールで実行したので下記のような感じですが、スクリプトファイルで書くときは無理して 1 行でコマンドを書く必要はありません。

[csh(FreeBSD)]
$ echo -n "rial";echo "kkuma"

rilakkuma

[ksh(UNIX)]
$ echo "rial\c";echo "kkuma"

rilakkuma