2017-02-13 104 views
2

我試圖通過使用'&'使用Linux的Azure自定義擴展腳本分隔每個命令來執行多個shell腳本。Linux的Azure擴展腳本

ARM模板是部署模型。

示例代碼段:

"settings": { 
    "fileUris": "[script1,script2, script3]", 
    "commandToExecute": "sh script1.sh && sh scrip2.sh && sh script3.sh" 
} 

但只有第一個腳本執行和其他兩個腳本不執行。

注意:腳本日誌路徑中也沒有錯誤。我也看到了所有在waagent文件夾路徑中下載的腳本。

任何幫助將是非常好的。

操作系統:Linux

回答

4

ARM模板片段

cmdToExecute = script1.sh參數1參數2 & & script2.sh param1 param2 & & script3.sh作爲字符串傳遞給包裝腳本,如

「commandToExecute」:「[concat('sh script_execut or.sh \「」,參數( 'cmdToExecute') '\」')]「

script_executor.sh - 需要所有的命令作爲參數,並執行

1

如果您有多個腳本,您可以編寫一個入口點腳本調用相關腳本,然後上傳入口點腳本,相關腳本和其他相關的二進制文件的腳本位置(Azure存儲塊或GitHub)。您可以使用以下格式來確保上傳多個文件:「fileUris」 : [「ScriptFileUri1」, 「ScriptFileUri2」, "ScriptFileUri3"]

更多信息請參閱此link

如果你想設置script1.sh爲切入點腳本,你可以編輯你的腳本,如下面:

##script in scrpit1.sh 
echo "hello world" 
##call script2.sh 
./script2.sh 

##call script3.sh 
./script3.sh 
+0

SCRIPT1,SCRIPT2,script3已經在上傳的每個命令Azure塊blob。我沒有提到每個腳本都需要一些參數[運行時部署值(動態IP等)] 我自己想出了一個不同的解決方案,我將所有命令作爲字符串傳遞給不同的腳本照顧執行 – SaiVikas

+0

@SaiVikas感謝您的分享。使用'入口點腳本'是一個很好的解決方案。 –