Вы не указали jq
фильтры. []
в фильтрах заставляет обе оболочки распознавать строки как шаблоны и пытаться применить генерацию пути. По умолчанию bash
обрабатывает непревзойденный шаблон как буквальный текст. zsh
, с другой стороны, обрабатывает несогласованный шаблон как ошибку.
Если в текущем каталоге имеется файл с именем .resources.entity.name
, обе оболочки будут использовать его как результат генерации пути, изменяя строка, которую вы намеревались передать в качестве аргумента jq
.
Если вы не хотите, чтобы оболочка обрабатывала строку, заключите ее в кавычки.
... | jq -r '.resources[].entity.name'
К сожалению, shellcheck
не может пометить это как ошибку, потому что она не знает, что произвольная команда ожидает от своих аргументов: возможно, шаблон без кавычек был преднамеренным.
Кроме того, можно изменить поведение любой оболочки по умолчанию , Чтобы заставить bash
вести себя как zsh
, используйте
shopt -s failglob
Чтобы заставить zsh
вести себя как bash
, используйте
setoption NO_NOMATCH
(я не уверен, почему там это опция с именем NOMATCH
, включенная по умолчанию, а не опция с именем MATCH
, которая по умолчанию отключена.)