你能告诉我如何将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
答案 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
程序。