0

你能告诉我如何将 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
4

3 回答 3

1

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

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

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

于 2013-08-29T04:57:45.563 回答
1

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

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

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

set myvar = "AAA"
perl -ne "if (/$myvar/) {s/m1/m2/g}" fileA
于 2013-08-29T05:25:35.843 回答
0

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

于 2013-08-29T04:12:52.680 回答