Я запускаю эту команду:
az vm run-command invoke -g my-group --name my-vm --command-id RunShellScript --scripts 'echo "$@"' --parameters 'foo=bar' 'color=red' 'thing=car'
Вывод:
{
"value": [
{
"code": "ProvisioningState/succeeded",
"displayStatus": "Provisioning succeeded",
"level": "Info",
"message": "Enable succeeded: \n[stdout]\nbar red car\n\n[stderr]\n",
"time": null
}
]
}
Где проблема?Я не знаю, как ссылаться на значения.
Кажется, что они доступны во время выполнения в env:
`az vm run-command invoke -g my-group --name my-vm --command-id RunShellScript --scripts 'env | grep -E "foo|color|thing"' --parameters 'foo=bar' 'color=red' 'thing=car'
Вывод:
{
"value": [
{
"code": "ProvisioningState/succeeded",
"displayStatus": "Provisioning succeeded",
"level": "Info",
"message": "Enable succeeded: \n[stdout]\nfoo=bar\nthing=car\ncolor=red\n\n[stderr]\n",
"time": null
}
]
}
Если я хочу использоватьчто-то вроде этого:
az vm run-command invoke -g my-group --name my-vm --command-id RunShellScript --scripts "for i ; do echo ${i} >> vars.file; done" --parameters 'foo=bar' 'color=red' 'thing=car'
и затем используйте:
source vars.file
Теперь это будет работать, потому что параметры анализируются как ключ и значение, и только значения перенаправляются в vars.file
Конечно, я могу сделать что-то вроде этого:
az vm run-command invoke -g my-group --name my-vm --command-id RunShellScript --scripts 'env | grep -E "EXPORTED_"' --parameters 'EXPORTER_foo=bar' 'EXPORTED_color=red' 'EXPORTED_thing=car'
, но это слишком сложное и грязное решение.
Спасибо