概要
TakkuMattsu/homebrew-refreshXcodeというXcodeのキャッシュを削除するだけのコマンドを作っていた時にハマったので備忘録として残しておく
結論
OSXではecho -eではなくprintfを利用する
(そもそもOSX標準のechoはecho -e
が動かない)
補足
経緯
Xcodeのキャッシュディレクトリを削除するだけのコマンドを作っていて、どうせならスクリプトの出力に色をつけたいと思い調査
シェル - echoで文字に色をつける その1を参考にecho -e
でできそうということがわかったので試してみる
echo -e "¥e[33mhoge¥e["
おほ、動く
早速スクリプトを変えようということで以下のようにした
(実際のコードではないです)
#!/bin/bash
# 文字色黄色でhogeと出力
echo -e "¥e[33mhoge¥e["
で実行
$ ./test.sh
なんでと思い試行錯誤、shebangを消して見る
echo -e "¥e[33mhoge¥e["
表示された
shebangは実際には以下を実行しているのと同じとのことなので
$ /bin/bash test.sh
パスが通っているbashを確認
$ which bash
/usr/local/bin/bash
そういえばhomeberwでbashインストールしていたことを思い出す
そうなるとecho -e
、OSX標準のbashでは使えないけどみんなどうしているのかなと疑問に思う
解決
シェルスクリプトの出力に色をつけたい!にちゃんと書いてありました。
これを実行すると、スクショにあるような色見本を得ることができます。
後は使いたい組み合わせをコピって printf や echo -e に渡すだけ!
(※ macOS だと echo -e が使えないので printf に渡すのが無難です。)
printfならOSX標準で動作するのでprintfを利用してカラー表示をした
(その時の修正)
まとめ
今回ハマったことでshebang
の意味や、シェルスクリプトのバージョンの違いで動作しないものがあることを知ることができてよかった