1

下面是一个csh脚本。

#! /bin/csh
set alpha=10\20\30;
set beta = $alpha.alpha;
perl -p -i.bak -e 's/gamma/'$beta'/' tmp;

tmp文件仅包含单词gamma. 运行后tmp.csh,我希望10\20\30.alpha在 tmp 中,但现在是102030.alpha.

在这种情况下如何保留斜线?

注意:我不喜欢更改 alpha 变量的定义,因为它仅用于脚本中需要采用这种格式 (10\20\30) 的其他地方。

谢谢。

4

1 回答 1

2

在 csh 中,对于您的 alpha 分配,反斜杠被视为“文字 2 或 3”。为了防止 csh 这样做,分配需要用引号引起来。

#! /bin/csh
set alpha="10\20\30";
set beta = $alpha.alpha;
perl -p -i.bak -e 's/gamma/'$beta'/' tmp;

如果有疑问,“回显”您的变量以准确查看它们包含的内容通常会有所帮助。我不明白你的最后一点,因为“alpha”变量不等于 10\20\30,就像你最初分配它的方式一样。

于 2013-03-29T17:47:42.023 回答