【发布时间】:2021-07-29 05:38:35
【问题描述】:
我已经处理了大约 3 天。我尝试了大多数双引号和单引号的组合,查看了大多数 stackoverflow 问题和答案,但仍然没有运气:( 下面是我的问题的简化版本。
> line="008256042a1b sh -c \"mysqldump databasename\""
> echo $line
008256042a1b sh -c "mysqldump databasename"
> docker exec $line
databasename": 1: databasename": Syntax error: Unterminated quoted string
【问题讨论】:
-
您需要知道要在哪个容器上运行该指令...应该类似于
docker run busybox bin/sh -c $line -
@Hackerman 这会准确说明要在哪个容器中运行命令,它使用
exec来执行此操作,而无需创建新容器,而是使用环境来传递命令。 OP 正在尝试在现有容器中运行任务并提供了minimal reproducible example。我看不出你的评论有什么相关性。 -
这是BashFAQ #50。
-
@Hackerman,由于上面 BashFAQ #50 链接中描述的原因,以这种方式使用
$line是错误的。 -
@SE 这只是一个评论,而不是一个答案......就像 CD 评论一样......cmets 应该给出关于如何获得实际答案的提示......如果你没有得到那样的话,这是你的问题......SMH