我有一个无法解决的问题。我想在Docker CLI容器中运行一个bash脚本,并希望通过传递参数来执行它。通常,我使用这样的符号来运行脚本:
docker exec -i $CLI_ID bash "./script.sh"
但是我不知道如何将参数传递给脚本。我尝试用以下命令执行它:
docker exec -i $CLI_ID bash "./script.sh PARAM"
但是它不起作用。我该怎么办?
谢谢
答案 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
通过这种方式,您不必在参数中添加其他级别的转义。