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

时间:2019-07-04 15:55:56

标签: bash docker docker-compose docker-container

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

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

但是我不知道如何将参数传递给脚本。我尝试用以下命令执行它:

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

但是它不起作用。我该怎么办?

谢谢

3 个答案:

答案 0 :(得分:2)

尝试使用bash -c option

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

希望这会有所帮助。

答案 1 :(得分:0)

确保脚本是可执行文件,然后不需要bash和双引号等。只需按路径/名称将其运行并提供选项即可。

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

ls $1


[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

答案 2 :(得分:0)

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

l

通过这种方式,您不必在参数中添加其他级别的转义。