我有一个脚本,我试图运行一个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);
答案 0 :(得分:0)
环境继承?当你启动你的sh脚本时,它对$ BUILD_DIR一无所知,即使在那之后它也不会知道,因为源脚本pl脚本将继承sh脚本的环境。
答案 1 :(得分:0)
您可以使用source scriptname
命令将所有内容都发生在当前shell的上下文中,而不是子shell。 (您也可以使用.
作为来源的别名,例如. scriptname
。)