1. ホーム
  2. linux

Bashでシングルクオート文字列をエスケープするには?

2023-10-20 05:58:36

質問

Bashで以下のような文字列を表示させたい。

I'm a student

もちろん、このようにすることもできます。

echo "I'm a student"

しかし、文字列をシングルクォートで囲みながら、これを実現するにはどうしたらよいでしょうか。

どのように解決するのですか?

echo 'I\'m a student'

は動作しません。しかし、以下は動作します。

echo $'I\'m a student'

bashのmanページより。

シングルクォートとシングルクォートの間には、たとえバックスラッシュが前にあっても バックスラッシュがあっても

....

フォームの単語 $'string'(文字列 という形式の単語は特別に扱われます。 この単語は は文字列に展開され、バックスラッシュでエスケープされた文字が、 ANSI C 標準規格で規定されているように置き換えられます。 に展開され、バックスラッシュでエスケープされた文字がANSI C標準で指定されたとおりに置き換えられます。