Я хочу добавить правила сопоставления путей в карту URL в Google Compute Engine. Вот моя команда:
gcloud compute url-maps add-path-matcher myproject-url-map --default-service \
backend-service-wordpress --path-matcher-name root --path-rules "/=backend-\
service-wordpress,/features/=backend-service-wordpress,/pricing/=backend-\
service-wordpress,/blog/=backend-service-wordpress,/\?*=backend-service-wordpress"
выдает следующее сообщение об ошибке:
ERROR: (gcloud.compute.url-maps.add-path-matcher) There was a problem modifying the resource:
- Invalid value for field 'resource': ''. Invalid path pattern
Я не думаю, что я определил пустой ресурс в этой командной строке.
Мне приходится заключать параметры --path-rules
в кавычки, иначе zsh будет жаловаться.
Это первое правило, которое я хочу определить. После этого я собираюсь добавить правило для сопоставления всего /*
с другой службой бэкэнда, например так:
gcloud compute url-maps add-path-matcher myproject-url-map --default-service \
backend-service-app --path-matcher-name others --path-rules "/*=backend-service-app"
Что означает это сообщение об ошибке? Что не так с моей командой?
решение1
Я подозреваю, что это как-то связано с использованием как двойных кавычек, так и обратных косых кавычек для аргумента --path-rules. В частности, вам не нужен обратный слеш, чтобы заключить в кавычки вопросительный знак. Обратите внимание на вывод:
print -r -- "\?"
Аналогично, для новых строк внутри двойных кавычек не требуется обратная косая черта, если только у вас не установлен параметр csh_junkie_quotes.
Есть несколько способов, которыми zsh может помочь вам автоматически заключить слова в кавычки. Один из способов — попытаться привязать клавишу к quote-region. Это заключит в кавычки регион (режим emacs) или визуальное выделение (режим vi).