4
我已經針對各種配置進行了一些構建設置,例如,是否可以將用戶定義的XCode構建設置導出到環境變量
例如
我可以像這樣訪問他們的各種文件(如Info.plist中):
${MYTESTSETTING}
但是是有可能得到在命令行環境的價值?例如從詹金斯
一個xcodebuild聯編後我試圖
echo ${MYTESTSETTING}
而且
echo $MYTESTSETTING
我已經針對各種配置進行了一些構建設置,例如,是否可以將用戶定義的XCode構建設置導出到環境變量
例如
我可以像這樣訪問他們的各種文件(如Info.plist中):
${MYTESTSETTING}
但是是有可能得到在命令行環境的價值?例如從詹金斯
一個xcodebuild聯編後我試圖
echo ${MYTESTSETTING}
而且
echo $MYTESTSETTING
xcodebuild -showBuildSettings
顯示所有構建設置,包括用戶自定義設置。例如:
$ xcodebuild -configuration Debug -showBuildSettings | grep MYTESTSETTING
MYTESTSETTING = DebugValue
$ xcodebuild -configuration Release -showBuildSettings | grep MYTESTSETTING
MYTESTSETTING = ReleaseValue
要將這些變量放到當前shell的環境中,必須解析此輸出。這可以例如用Perl腳本(或許多其他腳本語言)完成。
使用以下內容創建一個Perl腳本 「exportsettings.pl」:
#!/usr/bin/perl
open(FH, "xcodebuild -configuration Release -showBuildSettings|");
while(<FH>) {
if (/\s*(\w+)\s*=\s*(.*)$/) { # Search for <key> = <value>
$key = $1; $value = $2;
print "export $key='$value'\n";
}
}
close(FH);
現在你可以在命令行中運行命令
$ eval `perl exportsettings.pl`
,和(幾乎)所有的構建設置在環境中。 (會出現一些錯誤消息,例如「UID:只讀變量」)。
如果您需要在環境只有您使用自定義設置,你可以使用一個獨特的前綴(如「我的」),並改變線
if (/\s*(\w+)\s*=\s*(.*)$/) { # Search for <key> = <value>
到
if (/\s*(MY\w+)\s*=\s*(.*)$/) { # Search for MY<key> = <value>
我希望它將不會將值導出到系統名稱空間,是不是? –
@ A-Live:它輸出到執行'eval'命令的shell的環境。其他外殼或系統不受影響。我認爲這是OP想要的。 - 但我會改變我的回答,使其更清楚,謝謝你的反饋! –
真的很好答案!謝謝。 – Robert