我有一个调用Perl程序的ksh脚本。 Perl程序创建了一些ksh脚本需要处理的重要数据。例如:
我的ksh计划:
#!/usr/bin/ksh
abc.pl > $logFile
# perl pgm creates variable $importantData See below.
# HOW DO I GET THE .KSH SCRIPT TO SEE $importantData ???
def.ksh $importantData # send important data to another .ksh script
exit
我的Perl计划:
$importantData = somefunction();
exit;
答案 0 :(得分:1)
在* nix系统上,子进程无法修改其父进程的环境。如果您设计perl脚本以将重要数据打印到标准输出,那么您将有几种方法来捕获它以供以后处理。
最简单的方法是将输出重定向到文件以供以后处理:
perlprogram > saved.output
如果您只需要一个进程的数据,并且该进程是下一步要做的事情,您可以将perl输出传递给另一个进程的输入:
perlprogram | otherprogram
您还可以将输出保存到环境变量中(请注意,父脚本正在执行保存而不是子项):
envvariable=$(perlprogram)
或旧学校(引用复杂命令的问题):
envvariable=`perlprogram`
答案 1 :(得分:0)
难道你不能让perl脚本打印出数据然后将数据传输到新的ksh脚本
#perl script
print someFunction();
#ksh script
perl abc.pl | ksh scrip
答案 2 :(得分:0)
Perl程序应该打印变量。 KSH脚本捕获输出。
...的Perl
$importantData = somefunction();
print $importantData;
exit
... KSH
#!/usr/bin/ksh
abc.pl > $logFile
importantData=$(perlprogram)
def.ksh $importantData # send important data to another .ksh script
exit
答案 3 :(得分:0)
如果您无法使用标准输出或标准错误来提供$ importantData,则可以使用临时文件。
答案 4 :(得分:0)
如果值是数字,则可以使用Perl的exit()
函数返回它,该函数将显示为Perl的状态代码。
,exit(3)
将导致Perl将值3返回给ksh。
据我了解,您可以使用ksh的特殊$?
变量来读取最后一个命令的退出状态。有关详细信息,请参阅here。