てきとうなメモ

本の感想とか技術メモとか

cshのクォート文字列内部のエスケープ

POSIX Shellについては調べたことがあるけども、cshの場合はどうなのかなと思っていたらどうもエスケープできないみたい

% echo 'foo\'bar'
Unmatched '.
% echo "foo\"bar"
Unmatched ".

Csh Programming Considered Harmful」でもそんなこと書いてあったし。

4. QUOTING

You can't quote things reasonably in the csh:

set foo = "Bill asked, \"How's tricks?\""

doesn't work.

Csh Programming Considered Harmful

ただ、tcshの場合はbackslash_quoteを設定するとエスケープしてくれる。当然移植性は下がるけども

> echo 'foo\'bar'
Unmatched '.
> echo "foo\"bar"
Unmatched ".
> set backslash_quote
> echo 'foo\'bar'
foo'bar
> echo "foo\"bar"
foo"bar