Given the following resource in an AzureRM template, how would one encode the single quote in the commandToExecute
part?
{ "type": "Microsoft.Compute/virtualMachines/extensions", "name": "[concat(variables('vmNameMaster'), copyIndex(), '/sethost')]", "apiVersion": "2015-06-15", "location": "[resourceGroup().location]", "copy": { "name": "extensionLoopNode", "count": "[variables('masterCount')]" }, "dependsOn": [ "[concat('Microsoft.Compute/virtualMachines/', variables('vmNameMaster'), copyIndex(),'/extensions/DockerExtension')]" ], "properties": { "publisher": "Microsoft.OSTCExtensions", "type": "CustomScriptForLinux", "typeHandlerVersion": "1.4", "settings": { "fileUris": [ ], "commandToExecute": "[concat('/bin/bash -c \'echo \"export DOCKER_HOST=:2375\" >> /home/', parameters('adminUsername') ,'/.profile\'')]", "timestamp": 123456789 } } },
Single quotes need to be escaped by backslash in single-quoted strings, and double quotes in double-quoted strings.
A single quote is not used where there is already a quoted string. So you can overcome this issue by using a backslash following the single quote. Here the backslash and a quote are used in the “don't” word.
You escape Azure ARM functions in the same way as with VB strings: you simply double the single quote characters.
[concat('This is a ''quoted'' word.')]
outputs
This is a 'quoted' word.
Double quotes still needs to be escaped from JSON.
[concat('''single'' and \"double\" quotes.')]
outputs
'single' and "double" quotes.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With