Я запускаю это из PowerShell, поэтому я не уверен, произойдет ли это в другой среде (само регулярное выражение просто включает все, кроме тех, которые начинаются с «amq.»).
Когда я запускаю следующую команду, '^' удаляется из шаблона:
rabbitmqctl set_policy mirroring '^(?!(?:amq\.)).+$' '{"""ha-mode""":"""all"""}'
Он выводит следующее:
Setting policy "mirroring" for pattern "(?!(?:amq\\.)).+$" to "{\"ha-mode\":\"all\"}" with priority "0" ...
Я пытался сбежать от него разными способами, но безуспешно. Интересно, что настройка его из плагина веб-управления работает нормально.
ОБНОВИТЬ
Проблема, похоже, связана с ^
является зарезервированным символом в пакетных файлах (я думаю) и не цитируется в пакетном файле (т.е. PS должен передать строку в кавычках для шаблона, но он передавался в регулярном выражении как есть). Любая из следующих работ, основанная на биткракерответ:
rabbitmqctl set_policy mirroring '"^(?!(?:amq\.)).+$"' '{\"ha-mode\":\"all\"}'
rabbitmqctl --% set_policy mirroring "^(?!(?:amq\.)).+$" {\"ha-mode\":\"all\"}
rabbitmqctl @('set_policy','mirroring','"^(?!(?:amq\.)).+$"','{\"ha-mode\":\"all\"}')
Start-Process -FilePath 'rabbitmqctl' -ArgumentList 'set_policy mirroring "^(?!(?:amq\.)).+$" {\"ha-mode\":\"all\"}'
Если вы укажете массив значений, он автоматически расширит их на отдельные параметры.
& rabbitmqctl @('set_policy mirroring', '^(?!(?:amq\.)).+$', '{ha-mode:all}')
С помощью
Start-Process
командлет.
Start-Process -FilePath 'rabbitmqctl' -ArgumentList 'set_policy mirroring ^(?!(?:amq\.)).+$ {ha-mode:all}'
# Same as above, shortened using aliases and positional parameters
start rabbitmqctl 'set_policy mirroring ^(?!(?:amq\.)).+$ {ha-mode:all}'
saps rabbitmqctl 'set_policy mirroring ^(?!(?:amq\.)).+$ {ha-mode:all}'
... вы можете использовать
--%
оператор, который сообщает PowerShell, что нужно прекратить синтаксический анализ с этого момента до конца строки. Все, начиная с этого оператора, анализируется парсером, используемым программой.
rabbitmqctl --% set_policy mirroring ^(?!(?:amq\.)).+$ {ha-mode:all}
Ссылка: