在Unix中将变量从perl脚本传递到shell脚本

在Unix中将变量从perl脚本传递到shell脚本,perl,shell,unix,Perl,Shell,Unix,我非常了解使用“EXPORT”命令在shell脚本之间传递变量。但是在UNIX操作系统中,我必须将变量值从perl脚本传递到shell脚本 让我解释清楚 我有一个名为parent_shell.sh的父shell。在这个shell脚本中,我使用了一个名为'file\u name'的变量,我应该从子perl脚本中获取该变量 因此,在我的parent_shell.sh脚本中,它将如下所示: perl my_perl_script.pl file_name = 'variable' #from per

我非常了解使用“
EXPORT
”命令在shell脚本之间传递变量。但是在UNIX操作系统中,我必须将变量值从perl脚本传递到shell脚本

让我解释清楚

我有一个名为parent_shell.sh的父shell。在这个shell脚本中,我使用了一个名为
'file\u name'
的变量,我应该从子perl脚本中获取该变量

因此,在我的parent_shell.sh脚本中,它将如下所示:

perl my_perl_script.pl

file_name = 'variable' #from perl above perl script
希望这是清楚的。如果不清楚,请告诉我


谢谢

在perl中修改全局
%ENV
散列相当于在shell中导出变量

然而,在环境中以任何语言导出变量只会影响子进程。您不能以任何方式修改父进程环境

子脚本只能通过打印标准输出和标准错误以及它的状态来返回任何内容,但这是一个数字0-127(好吧,它是一个数字0-255,但shell只能可靠地处理127以下的值)

如果您只需要perl脚本中的一个值,只需打印该值并使用shell中的进程替换:

file_name=$(perl my_perl_script.pl)

如果更多,您可以打印shell代码来设置变量,并使用shell的
eval
,但请确保在从perl打印之前正确引用值。

这很清楚。使用shell脚本也不可能。谢谢Jan的回答。让我照你的建议去做,然后回来找你。