Linux POSIX字符不在CodeBuild服务器上工作

Linux POSIX字符不在CodeBuild服务器上工作,linux,amazon-web-services,ubuntu-18.04,aws-codebuild,Linux,Amazon Web Services,Ubuntu 18.04,Aws Codebuild,我试图在构建期间使用linux命令从节点项目中的package.json文件中获取版本号。我正在代码构建中使用Ubuntu 18.04映像。我想从buildspec.yml运行以下命令: export PACKAGE_NAME=$(cat package.json | grep name | head -1 | awk -F: '{ print $2 }' | sed 's/[",]//g') 这个命令的问题是awk-F:是无效的YAML。为了解决这个问题,我添加了一个POSIX空格字符: e

我试图在构建期间使用linux命令从节点项目中的package.json文件中获取版本号。我正在代码构建中使用Ubuntu 18.04映像。我想从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')
这个命令在Windows中的Git Bash上运行,在Ubuntu WSL上运行,在EC2实例中启动的Ubuntu 18.04上运行,但在通过CodeBuild运行时失败(变量返回为空),这对我来说没有任何意义,因为Linux命令应该在同一类型的Linux上运行。我验证了package.json在根目录中并且可以访问


那么,对于我来说,有没有一种语法上更好的方法来实现我的目标,或者有没有一种方法可以让CodeBuild以与其他linuxes相同的方式读取命令?

我通过在我的图像上安装jq,然后改用它来解决这个问题:

PACKAGE_VERSION=$(jq -r ".version" package.json)