从csh脚本调用perl时如何从字面上扩展变量?

时间:2013-03-29 17:28:52

标签: perl csh

以下是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后,我希望在tmp中10\20\30.alpha,但它现在是102030.alpha

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

注意:我不想更改alpha变量的定义,因为它在脚本中使用,只需要以这种格式(10 \ 20 \ 30)。

感谢。

1 个答案:

答案 0 :(得分: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。