以下是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)。
感谢。
答案 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。