Я загрузил репозиторий, содержащий скрипт .sh, чтобы открыть контейнер Docker. Я запускаю Windows 10 с Docker Toolbox (а не с полной версией, которая имеет некоторые проблемы с Hyper-V) и связанной с ней оболочкой, и я попытался запустить скрипт как в этом, так и в 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 ответ1

0

В классическом случае отладки резиновой утки это помогло мне увидеть ответ: в сценарии прямо указан неизвестный аргумент target, указывающий, что я не дал ему аргумента. В частности, в скриптах bash аргументы имеют нулевое индексирование с префиксом знака доллара, поэтому $ 0 - это имя скрипта, а $ 1, $ 2 и т.д. - дополнительные аргументы. В первой строке case $1 in проверяет, является ли $ 1 - аргумент после имени файла - одним из "keras_base" или "keras_branch". Если это не так или не предоставлено, возвращается Unknown target .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .