【问题标题】:Calling bash script inside AWS CodeBuild: script could not be found在 AWS CodeBuild 中调用 bash 脚本:找不到脚本
【发布时间】:2019-07-12 15:50:51
【问题描述】:

我正在尝试按照 AWS documentationthis 在我的 CodeBuild 进程中运行一个小型 bash 脚本。

deploy.sh可以在src/目录中找到:

#!/bin/bash

pwd=$PWD

for dir in */ ; do
  target="$pwd/${dir%/}"
  cd "$target"
  npm install
  sls deploy && sls s3deploy
done

构建规范文件:

version: 0.2

phases:
  install:
    runtime-versions:
      nodejs: 10
    commands:
    - cd backend/functions/src
    - npm install serverless
  build:
    commands:
    - ls
    - ./deploy.sh

在日志中上面的ls 命令之后,我可以看到deploy.sh 在当前目录中。

错误:

/codebuild/output/tmp/script.sh: 4: /codebuild/output/tmp/script.sh:./deploy.sh: 未找到

我也尝试过使用命令/bin/bash deploy.sh,但这会导致另一个错误:

deploy.sh:第 2 行:$'\r':找不到命令

deploy.sh:第 4 行:$'\r':找不到命令

deploy.sh:第 7 行:$'\r':找不到命令

deploy.sh:第 8 行:意外标记 `$'do\r'' 附近的语法错误

deploy.sh:第 8 行:`for dir in */ ;做

【问题讨论】:

  • 你是在Windows下制作文件的吗?转换为 DOS \r 行尾为 unix。
  • @Walter 不错。它是用 WSL 编写的,从 CRLF 更改为 LF 解决了问题

标签: bash amazon-web-services aws-codebuild


【解决方案1】:

(先写成评论,解决了问题)

这些文件是在 Windows 中制作的。
将 CRLF 更改为 LF,\r 就消失了。

【讨论】:

  • 在 azure app servvice 中遇到了类似的问题,但也确实做到了,THX
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-11-01
  • 2012-07-23
  • 1970-01-01
  • 1970-01-01
  • 2015-07-01
  • 2020-02-22
  • 2021-04-14
相关资源
最近更新 更多