我可以从Unix shell调用Perl脚本吗?例如,我有以下形式的bash脚本:
#!/bin/sh
echo This is bash
i=12
echo $i
perl <<__HERE__
print "This is perl\n";
my \$i = $i;
print ++\$i . "\n";
echo This is bash again
echo $i
以上只是一个例子。
是否可以将变量从bash传递给脚本?希望我正确而正确地表达自己。我需要调用Perl脚本,该脚本将从bash脚本获取值并使用它们然后返回处理结果。
答案 0 :(得分:1)
问题是美元符号需要逃脱。它构成了一个丑陋,容易出错的Perl脚本。使用环境变量。
#!/bin/bash
export i=12
readarray results < <(perl <<-'__HERE__'
my $i = $ENV{'i'};
print "$i\n";
$i += 1;
print "$i\n";
__HERE__
)
for r in "${results[@]}"; do echo $r; done
HERE 周围的引号可防止bash进行变量替换。 “ - ”允许这里的文档缩进标签。
虽然在Bash的细节上这是一个很好的练习,但为什么不仅仅在Perl或Bash中进行编码? Bash使用正则表达式,数组等.Perl可以完成Bash所能做的一切。
答案 1 :(得分:0)
这是一种在Shell脚本中调用Perl脚本的方法。确保Perl脚本是可执行的,第一行是#!/usr/bin/perl
。
#!/bin/sh
/path/to/perlscript/scriptName.pl arg1 arg2
如果您需要传递任何参数, arg1 arg2 ..
就是参数。
你可以设置PATH并像这样调用脚本:
#!/bin/sh
PATH=/path/to/perlscript/
${PATH}test.pl