出于某种原因,我需要在Bash中运行perl脚本。但是在perl中有一个计数器,我想在shell脚本(parent)中使用它。但由于某种原因,我无法取得它。
有人可以帮帮我吗? (我唯一的选择是将perl返回代码写入文件,然后在shell脚本(父)中读取文件以获取值。)
#!/bin/sh
cnt=1
echo "In Bash (cnt: $cnt)"
perl - $cnt <<'EOF'
#!/usr/bin/perl -w
my $cnt=shift;
while ($cnt<100) {
$cnt++;
}
print "In Perl (cnt: $cnt)\n";
exit $cnt;
EOF
echo "In Bash (cnt: $cnt)"
输出:
$ ./testPerl
在Bash(cnt:1)中
在Perl(cnt:100)中
在Bash(cnt:1)中
答案 0 :(得分:3)
#!/bin/sh
cnt=1
echo "In Bash (cnt: $cnt)"
cnt=`perl -e '
my $cnt=shift;
while ($cnt<100) {
$cnt++;
}
print $cnt;
exit' $cnt`
echo "In Bash (cnt: $cnt)"
答案 1 :(得分:1)
@askovpen在我之前回答了这个问题。我想证明你仍然可以使用heredoc:
#!/bin/sh
cnt=1
echo "before (cnt: $cnt)"
cnt=$(
perl -l - $cnt <<'EOF'
$x = shift;
$x++ while $x < 100;
print $x;
EOF
)
echo "after (cnt: $cnt)"
我更改了perl的变量名,以明确该变量未在所有
共享答案 2 :(得分:-1)
#!/bin/sh
cnt=1
echo "In Bash (cnt: $cnt)"
perl - $cnt <<'EOF'
#!/usr/bin/perl -w
my $cnt=shift;
while ($cnt<100) {
$cnt++;
}
print "In Perl (cnt: $cnt)\n";
exit $cnt;
EOF
cnt=$?;
echo "In Bash (cnt: $cnt)"