如何在 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
这样,您就不必为参数添加另一层转义。
我有一个我无法解决的问题。我想 运行 我的 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
这样,您就不必为参数添加另一层转义。