如何将tcsh变量传递给perl one-liner

时间:2013-08-29 04:02:41

标签: perl tcsh

你能告诉我如何将cshell变量传递给perl one liner吗?我希望脚本打印出AAA但它最终给我一个错误:替换替换没有在-e第1行终止。

#!/usr/bin/tcsh -fb

set myvar = "AAA"
perl -e "print $myvar"

我的剧本更复杂的情况。

#!/usr/bin/tcsh -fb

set myvar = "AAA"
perl -ne 'if (/$myvar/) {s/m1/m2/g}' fileA

3 个答案:

答案 0 :(得分:1)

来自主机系统的环境变量在Perl的%ENV变量中可用。但要将变量标记为可继承,您必须使用csh' setenv内置而不是set

% setenv myvar AAA
% perl -e 'print $ENV{myvar}'
AAA

(注意perl -e的参数中的单引号)

答案 1 :(得分:1)

您的perl语句为print 'AAA',因此您需要传递单引号。

set myvar = "AAA"
perl -e "print '$myvar'"

在另一种情况下,您需要使用双引号让Perl获取变量的值。

set myvar = "AAA"
perl -ne "if (/$myvar/) {s/m1/m2/g}" fileA

答案 2 :(得分:0)

您可以将myvar作为命令行参数传递给perl程序。