Bash-скрипт для контейнера Docker в Windows возвращает «Неизвестная цель»

284
Josh Friedlander

Я загрузил репозиторий, содержащий скрипт .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_$" docker tag "foo:keras_$" "XXXXXXXXXXX.dkr.ecr.us-east-1.amazonaws.com/foo:keras_$" ;; *) echo Unknown target "$1"; exit 1 ;; esac 
0

1 ответ на вопрос

0
Josh Friedlander

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

Похожие вопросы