Как устранить эту неоднозначную ошибку Azure?
Я использую команды запуска для выполнения сценариев bash через сценарии bash Azure CLI в виртуальной машине RHEL 7.
Я получаю сообщение об ошибке, когда есть фрагмент команды run:
az vm run-command invoke --name ${THIS_VM_NAME} \
--command-id RunShellScript \
--resource-group ${RSC_GRP_NAME} \
--query "output[].message | join('\n\n', @)" \
--scripts "
cat > /etc/init.d/parity <<'EOF'
${INIT_D_PARITY}
exit 0
EOF
chmod +x /etc/init.d/parity
service parity restart
sleep 5
ls -la /var/log/parity.err
ls -la /var/log/parity.log
ls -la /var/log/parity.node.log
echo '_____________________________________________'
echo 'Parity Error Log:'
tail -n 5 /var/log/parity.err
echo '_____________________________________________'
ls -la /usr/libs/libssl*
parity -v
cat /var/log/parity.node.log | grep -oEi '(enode.*@)' | tail -n 1 | sed 's/enode:\/\///' | sed 's/@.*//' > /etc/parity/enode.pub
ls -la /etc/init.d/parity
ls -la /etc/parity/enode.pub
cat /etc/parity/enode.pub
echo 'Parity is Up an running \o/'
"
Вот сообщение об ошибке:
В функции join() недопустимый тип для значения: нет, ожидается одно из: ['array-string'], получено: "null" Traceback (последний вызов был последним):
1 ответ
Функция join() является функцией JMESPath, которая является языком запросов для JSON. Вот простой пример:
Массив:
{
"locations": [
{"name": "Seattle", "state": "WA"},
{"name": "New York", "state": "NY"},
{"name": "Bellevue", "state": "WA"},
{"name": "Olympia", "state": "WA"}
]
}
Код запроса:
locations[?state == 'WA'].name | sort(@) | {WashingtonCities: join(', ', @)}
Результат:
{
"WashingtonCities": "Bellevue, Olympia, Seattle"
}
Для вашей проблемы, вы можете получить подробности по этой ссылке. Я думаю, что если вывод является массивом, то функция join() будет работать хорошо. Если нет, то придет ошибка, такая же, как у вас.