从bash脚本运行eval命令

时间:2014-11-12 19:29:45

标签: xcode bash perl shell unix

我有一个脚本,我试图运行一个perl脚本,将Xcode构建设置导出到会话的上下文中。但出于某种原因,当我运行以下脚本时,$BUILD_DIR始终为空。但是当我从命令行运行相同的命令集时,它完全正常。我错过了什么吗?

#!/bin/sh

{
    yes | ./perlScript.pl;
    runPerl=`perl perlScript.pl`
    eval $runPerl;
    echo Build path is $BUILD_DIR;
}

echo all operations are done!

perl脚本,作为参考

#!/usr/bin/perl
open(FH, "xcodebuild -project MyProj.xcodeproj -scheme MyScheme -showBuildSettings|");
while(<FH>) {
 if (/\s*(\w+)\s*=\s*(.*)$/) { # Search for <key> = <value>
 $key = $1; $value = $2;
 print "export $key='$value'\n";
 }
}
close(FH);

2 个答案:

答案 0 :(得分:0)

环境继承?当你启动你的sh脚本时,它对$ BUILD_DIR一无所知,即使在那之后它也不会知道,因为源脚本pl脚本将继承sh脚本的环境。

答案 1 :(得分:0)

您可以使用source scriptname命令将所有内容都发生在当前shell的上下文中,而不是子shell。 (您也可以使用.作为来源的别名,例如. scriptname。)

相关问题