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

标签 linux amazon-web-services ubuntu-18.04 aws-codebuild

在构建期间,我正在尝试使用 linux 命令从节点项目中的 package.json 文件中获取版本号。我在 Codebuild 中使用的是 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 像其他 linux 一样读取命令?

最佳答案

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

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

关于linux - POSIX 字符在 CodeBuild 服务器上不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58776815/

相关文章:

postgresql - 定义 AWS RDS Postgres session 限制

java - (AWS + Credentials) 类型 TextractClientBuilder 未定义方法 withCredentials(AWSStaticCredentialsProvider)

php - AWS php5.4无法连接RDS

postgresql - 使用一个docker-compose.yml启动两个Wiki js容器,并通过traefik分离数据库(postgres)

intellij-idea - Intellij IDEA 向左/向右移动元素(Ctrl+Alt+Shift+Left/Right)在 Ubuntu 18.01 上不起作用

linux - Xdotool 在 Raspberry Pi 上失败

linux - 使用 crosstool-ng 构建 ARM 交叉编译器失败

linux - pthread线程池?

linux - 使用Cloud9 iDE与AWS交互是否是强制性的?

c++ - 找不到-lopencv_contrib 找不到-lopencv_legacy