Bash-Skript für Docker-Container in Windows gibt "Unbekanntes Ziel" zurück

298
Josh Friedlander

Ich habe ein Repository heruntergeladen, das ein .sh-Skript enthält, um einen Docker-Container zu öffnen. Ich verwende Windows 10 mit Docker Toolbox (anstelle der Vollversion, die einige Hyper-V-Probleme aufweist) und der zugehörigen Shell. Ich habe versucht, das Skript sowohl in diesem als auch in git-bash (das auf Windows basiert) auszuführen MinGW / Mintty), und in beiden Fällen bekomme ich

$ ./build-image.sh Unknown target 

Hier ist das vollständige Skript, das aus Datenschutzgründen leicht geändert wurde:

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 Antwort auf die Frage

0
Josh Friedlander

In einem klassischen Fall des " Rubber-Duck" -Debugging half mir das Auslesen, die Antwort zu sehen: Das unbekannte Zielargument ist genau im Skript, was darauf hinweist, dass ich ihm kein Argument gegeben hatte. In Bash-Skripten werden die Argumente insbesondere mit Nullzeichen versehen, wobei das Dollarzeichen vorangestellt ist. $ 0 ist also der Name des Skripts und $ 1, $ 2 usw. sind zusätzliche Argumente. Die erste Zeile case $1 inprüft, ob $ 1 - das Argument hinter dem Dateinamen - "keras_base" oder "keras_branch" ist. Wenn nicht oder nicht angegeben, wird es zurückgegeben Unknown target.