0

我非常清楚使用 ' EXPORT' 命令在 shell 脚本之间传递变量。但是我坚持将变量值从perl 脚本传递到UNIX 操作系统中的 shell 脚本。

让我解释清楚。

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

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

perl my_perl_script.pl

file_name = 'variable' #from perl above perl script

希望这很清楚。如果不清楚,请告诉我。

谢谢

4

1 回答 1

0

在perl中修改全局%ENVhash相当于在shell中导出变量。

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

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

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

file_name=$(perl my_perl_script.pl)

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

于 2013-10-07T12:41:46.980 回答