如果我从命令行运行以下命令。
docker run -t repo:tag ls -l
命令成功得很好。然而,如果我在bash脚本中调用相同的脚本,我会得到以下错误:
docker:后台进程的错误响应:OCI运行时创建失败:container_linux.go:348:启动容器进程导致"exec:\"ls-l \":在$PATH中找不到可执行文件":未知。
bash脚本会导致此错误吗?
"exec:\"ls-l\":在$PATH中找不到可执行文件">
从错误中我可以看出,当您调用docker时,您以某种方式调用ls -l
,其中包括作为一个参数的空间。类似
docker run -t repo:tag "ls -l" # wrong
或者
cmd="ls -l"
docker run -t repo:tag "$cmd" # wrong
解析docker命令的shell必须将ls
和-l
视为单独的参数,以便将参数-l
与ls
可执行文件名区分开来。
cmd="ls -l"
docker run -t repo:tag $cmd #works