【发布时间】:2020-07-15 03:15:21
【问题描述】:
构建 docker 镜像....... /usr/bin/env: ‘sh\r’: 没有这样的文件或目录 执行失败
完整的脚本
#!/bin/bash
echo "Building docker image......."
. gradle.properties
IMAGE="$dockerRegistry/$1"
IMAGE_TAG="$releaseVersion-$(git log -1 --pretty=%h)"
if ./gradlew clean :$1:jibDockerBuild -x test; then
echo "Pushing docker image...."
docker tag $IMAGE $IMAGE:$IMAGE_TAG
docker push $IMAGE:$IMAGE_TAG
else
echo "execution failed"
exit 1
fi
exit 0
【问题讨论】:
-
你也可以在这里发布你的 Dockerfile 吗?
-
$'\r'是回车。您的代码可能保存为 DOS/Windows 文本文件,而不是 UNIX 文件。 DOS 文本文件使用CRLF序列($'\r\n')分隔行,而 UNIX 文本文件 end 行(包括最后一行)仅使用换行符($'\n')。 -
查看stackoverflow.com/tags/bash/info的“在询问有问题的代码之前”部分中的第一个条目
-
也就是说,这是一个不同的程序抛出了你的错误,而不是这个。此代码未使用
env或sh。也许是您的gradlew副本以这种方式检查?无论哪种方式,无论是哪个程序,错误都如上所述。 -
在脚本顶部添加打印命令
set -x以缩小脚本完全失败的命令范围。