2017-02-13 52 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感谢您的分享。使用'入口点脚本'是一个很好的解决方案。 –