Я пытаюсь использовать команду linux для получения номера версии из моего файла package.json в проекте узла во время сборки. Я использую образ Ubuntu 18.04 в Codebuild. У меня есть следующая команда, которую я хотел бы запустить из buildspec.yml:
export PACKAGE_NAME=$(cat package.json | grep name | head -1 | awk -F: '{ print $2 }' | sed 's/[",]//g')
Проблема с этой командой в том, что awk -F: является недействительным YAML. Чтобы исправить это, я добавил символ пробела POSIX:
export PACKAGE_NAME=$(cat package.json | grep name | head -1 | awk -F:[[:space:]] '{ print $2 }' | sed 's/[",]//g')
Эта команда работает на Git Bash в Windows, работает на Ubuntu WSL, работает на Ubuntu 18.04, запущенной в экземпляре EC2, но не можетработать при запуске CodeBuild (переменная возвращается пустой), что не имеет никакого смысла для меня, так как команда Linux должна работать одинаково на том же типе Linux. Я проверил, что package.json находится в корне и доступен.
Итак, есть ли синтаксически лучший способ для достижения моей цели или есть способ заставить CodeBuild читать команду так же, как остальныеиз линуксов делать?