我非常清楚使用“EXPORT
”命令在shell脚本之间传递变量。但是我坚持在UNIX操作系统中将变量值从 perl脚本传递到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
希望这很清楚。如果不清楚,请告诉我。
由于
答案 0 :(得分:0)
修改perl中的全局%ENV
哈希等同于在shell中导出变量。
但是,在环境中以任何语言导出变量仅影响子流程,期间。您无法以任何方式修改父进程环境。
子脚本只能通过打印标准输出和标准错误以及它的状态返回任何内容,但这是0-127(好吧,它是一个0-255的数字,但是shell只能可靠地处理这些值到127)。
如果您只需要perl脚本中的一个值,只需打印该值并使用shell中的进程替换:
file_name=$(perl my_perl_script.pl)
如果更多,您可以打印shell代码来设置变量并使用shell的eval
,但请确保在从perl打印之前正确引用值。