bash&zshでシングルクォートのエスケープ

ハマったのでメモ。

bash&zshでシングルクォートのエスケープをする場合はちょっとしたテクニックが必要らしい。

ダメダメ例

ダメダメなエスケープ。

% echo 'tanaka\'s OS'
quote>

残念ながら'tanaka\'で終わってしまう。

回避する。

エスケープするにはちょっとしたテクが必要。

% echo 'tanaka'\''s OS'
tanaka's OS

'\''という意味不明なエスケープをする。

何故か?

分解してみる。

% echo 'tanaka' \' 's OS'
tanaka ' s OS

シングルクォートの中で\'というエスケープが出来ないので、一旦文字列を終了し、\'を入力。もう一度文字列を再開する。

まとめ

  • シングルクォートのエスケープはかなり面倒。
  • shも同様なので、シェルスクリプトを書く際は要注意。
  • ダブルクオートなら"tanaka's OS"だけで良い。
  • zshならもっとうまい回避法がありそうな気がする。

参考

  • 入門bash 1.9.3 引用符のクォーティング

更新履歴

  • 2013/05/24
    • shについて追記。