簡體   English   中英

從bash腳本運行eval命令

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM