Windows 中 Docker 容器的 Bash 脚本返回“未知目标”

Windows 中 Docker 容器的 Bash 脚本返回“未知目标”

我下载了一个包含 .sh 脚本的存储库,用于打开 Docker 容器。我运行的是 Windows 10,其中包含 Docker Toolbox(而不是完整版,后者存在一些 Hyper-V 问题)及其相关 shell,我尝试在其中和 git-bash(基于 MinGW/mintty)中运行该脚本,在这两种情况下,我都得到了

$ ./build-image.sh
Unknown target

以下是完整脚本,为保护隐私,我们进行了轻微编辑:

case $1 in
    keras_base)
        docker build -f docker/keras_base docker -t foo:keras_base
        ;;
    keras_branch)
        git archive HEAD > bar.tar
        cp bar.tar docker/keras_branch
        branch=$(git rev-parse --abbrev-ref HEAD)
        docker build docker/keras_branch -t "foo:keras_${branch}"
        docker tag "foo:keras_${branch}" "XXXXXXXXXXX.dkr.ecr.us-east-1.amazonaws.com/foo:keras_${branch}"
        ;;
    *)
        echo Unknown target "$1"; exit 1
        ;;
    esac

答案1

一个经典案例橡皮鸭调试,写出这句话让我找到了答案:脚本中就有未知的目标参数,这表明我没有给它提供参数。具体来说,在 bash 脚本中,参数以美元符号为前缀,从零开始索引,因此 $0 是脚本的名称,而 $1、$2 等是附加参数。第一行case $1 in检查 $1(文件名后的参数)是否是“keras_base”或“keras_branch”之一。如果不是,或者没有提供,则返回Unknown target

相关内容