2015-02-05 148 views
1

我有一个文件“TEMP.TXT”在UNIX外壳含有声明环境变量外壳

var1=hello 
var2=ello 
var3=mello 
....and a long list 

,我们可以简单地使用. temp.txt是使用所有的变量在文件中..

我们是否有Perl或任何变通的类似功能..

我想一个解决办法

$ cat checkDOTfuctionOFunix.ksh 
#!/bin/ksh 
. /export/home/temp.txt 
#export 

/export/home/checkDOTfuncPRINTSinPERL.pl 

$ cat /export/home/checkDOTfuncPRINTSinPERL.pl 
#!/usr/local/bin/perl 

print "var1=$ENV{var1} \n\n var2=$ENV{var2} \n\n"; 

但这不会工作,除非我导出每个值可以用简单的sed -e 's/^/export/完成,但我不喜欢这样做。请帮助:)

回答

1
set -a 
. temp.txt 
set +a 
./checkDOTfuncPRINTSinPERL.pl 

与集-a作为解释here,所有变量赋值推动变量的环境变量。
Here一些doc到shell设置选项。

+0

干杯!这工作..但有这样一个命令在Perl中...我想避免从ksh shell脚本调用perl脚本,并直接在'checkDOTfuncPRINTSinPERL.pl'中使用'temp.txt'文件 –

0

现在可以在Perl中使用Env::Modify module

use Env::Modify 'source'; 
source("temp.txt");  # like saying . temp.txt in the shell 
.. env settings in temp.txt are now available to Perl ...