Linux shell中的嵌入式Perl脚本

时间:2015-05-19 09:35:34

标签: linux bash perl shell

我可以从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脚本获取值并使用它们然后返回处理结果。

2 个答案:

答案 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