如何在 Docker CLI 中 运行 参数化 bash 脚本

How to run parametrized bash scripts in Docker CLI

我有一个我无法解决的问题。我想 运行 我的 Docker CLI 容器中的 bash 脚本,我想执行它,传递参数。通常,我 运行 脚本使用这样的符号:

docker exec -i $CLI_ID bash "./script.sh"

但是我不知道如何给脚本传递参数。我试着用:

来执行它
docker exec -i $CLI_ID bash "./script.sh PARAM" 

但是没用。我该怎么做?

谢谢

确保脚本是可执行的,然后你不需要 bash 和双引号等。只需 运行 它直接由 path/name 并提供选项。

[root@ap-p1m-ff ~]# docker exec -i 0c cat /tmp/test.sh
#!bin/bash

ls 


[root@ap-p1m-ff ~]# docker exec -i 0c /tmp/test.sh -l
total 4
-rw-r--r--   1 root root 159 Jun  4 18:32 RELEASE
drwxr-xr-x   2 root root 120 Jun  4 18:33 assets
drwxr-xr-x   1 root root  31 Jun  4 18:33 bin
drwxr-xr-x   2 root root   6 Apr 12  2016 boot
drwxr-xr-x   5 root root 340 Jun  7 19:50 dev
drwxr-xr-x   1 root root  22 Jun  7 19:50 etc

但如果脚本尚未执行,bash 也应该可以工作:

[root@ap-p1m-ff ~]# docker exec -i 0c bash /tmp/test.sh -l
total 4
-rw-r--r--   1 root root 159 Jun  4 18:32 RELEASE
drwxr-xr-x   2 root root 120 Jun  4 18:33 assets
drwxr-xr-x   1 root root  31 Jun  4 18:33 bin
drwxr-xr-x   2 root root   6 Apr 12  2016 boot
drwxr-xr-x   5 root root 340 Jun  7 19:50 dev
drwxr-xr-x   1 root root  22 Jun  7 19:50 etc
drwxr-xr-x   2 root root   6 Apr 12  2016 home
drwxr-xr-x   1 root root  45 Sep 13  2015 lib
drwxr-xr-x   2 root root  34 May 15 14:22 lib64
drwxr-xr-x   2 root root   6 May 15 14:22 media

试试 bash -c option

docker exec -i $CLI_ID bash -c "./script.sh PARAM"

希望对您有所帮助。

将您的参数添加为单独的参数而不是文件名的一部分:

docker exec -i "$CLI_ID" bash "./script.sh" PARAM

这样,您就不必为参数添加另一层转义。