Re: [Q] 便乗質問 shの \%->%って何で必要?( Re: cronで逆シングルクォーテーションを使いたい)
しらいです。
In article <m3ekuy7hss.fsf@kzin.dip.jp>, Mito <co_mon@ybb.ne.jp> wrote:
>また、"" や '' 内で \ が使用された場合はちょっと違いまして、\ 自
>身は削除されません。
Bourne shell の眷族では '' と "" の意味は異なりますよ。例
えば「echo '$HOME'」と「echo "$HOME"」の違いを確認してみて下
さい。このことは man page にも載っている筈です。
'' は全ての文字を純粋に文字として扱うため、meta character
が存在せず、それ故「\」も escape character ではありません。
一方 "" は「$」や「`」を meta charaster として扱いますので、
それらの meta character を純粋に文字として扱うために「\」が
escape character として扱われます。
結果として、「$」「`」「\」「"」の 4 文字については、"" の
中で純粋に文字として扱うためには、それぞれ「\$」「\`」「\\」
「\"」と記述する必要があります。逆にこれ以外の文字を "" の中
で「\」で冠しても「\」は escape character たり得ませんので、
「\a」のように「\」+「文字」として扱われます。
因みに、'' が escape character を持たないという事実は、同
時に '' の中に「'」自身を純粋に文字として表現する手段が存在
しないことも意味します。
"" 中の「"」は上述のように「\"」として記述可能ですが、同様
のことが '' の中では出来ません。"" や '' を入れ子に用いる場
合には、こういった仕様を踏まえた上で配慮する必要があります。
>たぶんこのへんのことは全て man sh すれば書いてあるはずですので、
>ご自分で調べてみてください。(man bash かな?)
man page にはそこまで詳しくは書かれていません。POSIX でも
規定されていないので、多分実装依存で構わないのだと思います。
実際は Bourne shell の仕様に合わせていることが多いですけどね。
--
しらい たかし
Fnews-brouse 1.9(20180406) -- by Mizuno, MWE <mwe@ccsf.jp>
GnuPG Key ID = ECC8A735
GnuPG Key fingerprint = 9BE6 B9E9 55A5 A499 CD51 946E 9BDC 7870 ECC8 A735