シングルクオートの文字列でシングルクート文字をエスケープする

こんにちは、さるまりんです。

今日はシェルの小ネタです。

タイトルの通りなのですが、シェルでシングルクオートで囲われた文字列の中でシングルクオート文字を使うときはどのように書いたらいいでしょうか?

echo 'abc's'

こうすると

$ echo 'abc's'
quote> '
abcs

文字列が終了していないのでこんな風になります。

abc'sと表示したいだけなのです。

ではどうするのか。

'"'"'"でシングルクオート一つにすることができます。

$ echo 'abc'"'"'s'
abc's

できました。

これはどうなっているか簡単に書くと
一つ目の'で最初の'ではじまった文字列を終わらせます。
"で二つ目の文字列を開始、二つ目の'は実際に表示されているシングルクオートです。
で、二つ目の""で始まった文字列を終わらせます。
三つ目の'で新たにシングルクオートの文字列を開始しています。

真ん中の'だけ"'"でダブルクオートの文字列なのでエスケープとはちょっと違うのかな。

シンプルにダブルクオートでやれば

$ echo "abc's"
abc's

こんな風に簡単なのですが、シングルクオートでなければいけないケースもあると思うので、覚えていると便利かもです。

読んでくださってありがとうございました。

それではまた!