如何将我的变量从 Bash 脚本转移到 Perl 脚本中?

J. *_*Doe 6 bash scripts language environment-variables perl

我在 bash 脚本中有变量,我需要将它们转移到 perl 脚本中。我在 bash 脚本中声明了变量 $gal 和 $obsid,然后我调用了新程序。

gal=UCLA121
obsid=1896
./my_program
Run Code Online (Sandbox Code Playgroud)

perl 脚本的开头加载带有短语的图像

$ph_im =  "./$gal/img/${obsid}.img";
Run Code Online (Sandbox Code Playgroud)

但是新程序中的变量为NULL。

Ser*_*nyy 19

可以通过导出变量来使 shell 脚本中的子进程可以使用变量

export foo=bar
Run Code Online (Sandbox Code Playgroud)

或者通过调用带有变量的程序

foo=bar ./my_prog.pl
Run Code Online (Sandbox Code Playgroud)

无论哪种情况,您都需要ENV在 perl 脚本中调用它们

my $barfoo = $ENV{'foo'};
Run Code Online (Sandbox Code Playgroud)


gle*_*man 10

使用环境是一种更清洁的方式。

还有-s开关

$ cat vars.pl
#!perl
use feature 'say';
say "foo=$foo";
say "bar=$bar";

$ echo "$foo,$bar"
123,456

$ perl -s ./vars.pl -foo="$foo" -bar="$bar"
foo=123
bar=456
Run Code Online (Sandbox Code Playgroud)