首页 > 解决方案 > 语法错误:运行 docker exec 命令时未终止的引号字符串

问题描述

我已经处理了大约 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

标签: bashdockersh

解决方案


问题是你试图在 $line 中放一个命令,就像你想运行:

sh -c \"mysqldump Database\"
Database": 1: Syntax error: Unterminated quoted string

这应该工作:

line=(008256042a1b sh -c "mysqldump databasename")
echo "${line[@]}"
docker exec "${line[@]}"

"mysqldump databasename"是单个字符串。

\"mysqldump databasename\"实际上是两个字符串。

"${line[@]}"允许数组项的适当扩展。


推荐阅读