Linux C Shell 如何写带有“$”符号的命令

昨天遇到的问题,本来要把“../..”这样的相对路径改成“$ROOT/dir”这样的路径,于是就做了一个单行 Perl 命令行。

perl -p -i -e "s/\.\.\/\.\./\$\(ROOT\)\/dir/g" *

结果,C Shell 报错。

Variable name must contain alphanumeric characters.

很明显,C Shell 把 $ 符号作为环境变量的起始,试图用环境变量替换 $ 后面的部分。但是,我只是单纯地要 $ 出现在命令中而已,并不需要替换环境变量。

后来,搜了一下,要写成这样才可以。

perl -p -i -e "s/\.\.\/\.\./\\"'$'"\(ROOT\)\/dir/g" *

唉,伟大万能的 linux,就这么一个 $ 符号让我浪费了三个小时……

添加新评论