Python is not found, so $ARCH gets assigned to "", and you didn't double quote your variables in the comparison, so the code parses as [ == "aarch64" which is a syntax error.
Also, maybe uname -m could work instead of that Python script.
Python is not found, so $ARCH gets assigned to "", and you didn't double quote your variables in the comparison, so the code parses as [ == "aarch64" which is a syntax error.
Also, maybe uname -m could work instead of that Python script.
What is your base image? It has no python installed.
You should use python3 anyway not python. The latter is sometimes Python 3, sometimes Python 2 and sometimes doesn't exist. python3 works reliably, assuming you have it installed.
(And assuming you aren't using the official Windows Python installer, but that doesn't seem like the case here!)
Python is not on the Path for docker. The error message "python: command not found" is then passed to the [ command (also called test) which says too many arguments.
Add the path /use/bin/ to your python command. Or figure out why it isn't on the docker path.
This is a docker/bash question, not a python question. Also reading the error message explains the problem.
In addition to what everybody said:
Those will help catch many problems before they happen or exactly when they happen.
P.S I would recommend against
set -o pipefail
It can introduce some very weird behaviour when it doesn't work.
Thank you so much. Especially for the Shell Check. That's an invaluable resource.
Could you elaborate on the weird behaviour introduced by pipefail?
This wiki explains one pitfall of nonstandard return codes in pipes. The other one that bit me is pipes that just stop existing (error 141).
Thanks. Bash should just be avoided except trivial uses. It has an impressive collection of footguns. I've written a lot of bash, even used it for CGI scripts to create web tools, but honestly it is time to move on. Ansible and Python cover most of the bash use cases.
all 17 comments