[英]running eval command from bash script
我有一個腳本,我試圖在其中運行將Xcode構建設置導出到會話上下文的perl腳本。 但是由於某種原因,當我運行以下腳本時, $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);
環境繼承? 當您啟動sh腳本時,它對$ BUILD_DIR一無所知,甚至在此之后也不知道,因為源的pl腳本將繼承sh腳本的環境。
您可以使用source scriptname
命令使所有操作都在當前Shell(而不是子Shell)的上下文中進行。 (您也可以將.
用作源的別名,例如. scriptname
。)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.