echo コマンドで -e って表示させようとしてハマった話(と解決策)
最近 bash の complete コマンド(自動補完)がプチマイブームなので、自作のスクリプトのための補完とかをシコシコ作成しています。
そのうち、覚えたこととかをまとめてブログに書こうと目論んでいるところです。
で、例によって complete 用の関数とかを作ってる途中ですごく基本的なことでハマったのでここにメモしておきます。
それはタイトルにもあるとおり、echo コマンドを使って -e と表示させたかったのですが、-e は echo のオプション(エスケープシーケンス有効化)として解釈されてしまうので、
$ echo -e
を実行しても実際には何も表示されないという罠があります。
とりあえず思いつきで
$ echo -- -e
を試してみたのですが、これは効果なし。
echo のマニュアルをみても -- は存在しないようです。
仕方がないので
echo -n - echo e
と2回にわけて実行して難を逃れたのですが、どうにもダサいですね。
ぐぐってみるにも -e って検索しづらい。。。
どうにか見つけた我らが StackOverflow のページでは、
bash - echo "-e" doesn't print anything - Stack Overflow
printf コマンドを使用していたり、あえてエスケープシーケンスを使って表示させてみたり、POSIXLY_CORRECT=1 という環境変数を設定してみたり、-e の前にゴミをつけてそれをパイプで sed に渡して消すっていう力技まで登場したりしていて、世界中でみんなが困っているんだなぁということがわかってなんかほっこりしました。
coreutils が使えるなら printf を使って表示するのがスマートなんではないでしょうか。
- 作者: Cameron Newham,Bill Rosenblatt,株式会社クイープ
- 出版社/メーカー: オライリージャパン
- 発売日: 2005/10/27
- メディア: 大型本
- 購入: 7人 クリック: 138回
- この商品を含むブログ (45件) を見る
- 作者: 山下哲典
- 出版社/メーカー: ソフトバンククリエイティブ
- 発売日: 2010/01/28
- メディア: 単行本
- 購入: 2人 クリック: 46回
- この商品を含むブログ (2件) を見る
- 作者: Carl Albing,JP Vossen,Cameron Newham,株式会社クイープ
- 出版社/メーカー: オライリージャパン
- 発売日: 2008/09/26
- メディア: 大型本
- 購入: 8人 クリック: 268回
- この商品を含むブログ (31件) を見る
- 作者: 川村正樹
- 出版社/メーカー: 秀和システム
- 発売日: 1999/01
- メディア: 単行本
- クリック: 2回
- この商品を含むブログを見る