Macのシェルスクリプト内で echo -n しても改行が抑制されない件

echoコマンドはオプションなしだと指定文字列に改行を付けて表示します。-nオプションを付けると改行を出力しなくなります。odコマンドでダンプ出力してみるとよくわかります。

$ echo ABC | od -t x1
0000000 41 42 43 0a
0000004
$ echo -n ABC | od -t x1
0000000 41 42 43
0000003

ところがMacの場合、シェルスクリプト内で echo -n を使うと -n 部分を文字列として出力してしまい、かつ、改行を付けてしまいます。

$ cat echoABC1.sh ←内容表示
#!/bin/sh
echo -n ABC
$ sh echoABC1.sh ←実行
-n ABC

なんでこうなるか詳しく調べてませんが、どうもシェルスクリプトでechoとするとシェルの内部コマンドのechoを呼び出してしまいそのechoは改行抑制オプションがないっぽいです。なので、外部コマンドの/bin/echoを絶対パス指定で実行すればこの問題を回避できます。

$ cat echoABC2.sh ←内容表示
#!/bin/sh
/bin/echo -n ABC
$ sh echoABC1.sh ←実行
ABC

LinuxとかFreeBSDだとシェルスクリプト内での echo -n が有効なので、そうなっているシェルスクリプトをそのままMacに持ってきて使おうとするとハマるかもしれませんね。MD5ハッシュ取ったりBase64エンコードしたりするとき改行が邪魔になるので-nオプションは結構使うんですよね。気をつけましょう。

MacBookProのHDD交換で使ったトルクスドライバーはT6

MacBookPro(13inch 2009 mid)のHDD交換ではHDDのアダプタを外すためにトルクスドライバーが必要になります。

今回使ったのは、ベッセル(VESSEL) パワーグリップ トルクスドライバー T6 No.B-5400TX です。

重要なのはT6の部分。これはネジ頭部星形穴の大きさのことで今回の作業ではT6じゃないとダメでした。T7とかT8とかだと星形穴に入りません。一応下にamazonリンク張っておきます。