bash - 在 docker 命令中转义撇号

标签 bash docker escaping airflow

我正在尝试通过以下方式使用 docker CLI 命令添加变量:

 docker exec -u root  airflowdags_webserver_1 bash -c  "airflow variables --set my_var '{\"test\": \"test\'2\"}'"

但出现以下错误:

bash: -c: line 0: unexpected EOF while looking for matching `"'

bash: -c: line 1: syntax error: unexpected end of file

如果执行以下命令之一,我没有任何错误:

docker exec -u root  airflowdags_webserver_1 bash -c  "airflow variables --set my_var '{\"test\": \"test\`2\"}'"

docker exec -u root  airflowdags_webserver_1 bash -c  "airflow variables --set my_var '{\"test\": \"test2\"}'"

如何转义“test'2”值中的撇号以避免错误?

最佳答案

bash 单引号字符串不能包含单引号。你无法逃避它。 (引用 https://www.gnu.org/software/bash/manual/bashref.html#Single-Quotes )

试试这个:

bash -c  "airflow variables --set my_var '{\"test\": \"test'\''2\"}'"
# .......................................1.................1..2....2

我对匹配的单引号字符串进行了编号。中间是文字单引号。

关于bash - 在 docker 命令中转义撇号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46836485/

相关文章:

docker - 官方docker镜像跨平台兼容吗?

docker - 为什么我无法执行vendor/bin/drush(文件没有执行权限)

docker - 在OS(CoreOS)重新启动时,Docker启动多个容器

java - 如何在 Java 中删除/忽略 JSON { 和 ] 之前的引号

php - 不要在表单提交时转义特殊字符

regex - 如何在 Apache `/` 指令的正则表达式中转义斜杠符号 `<If>`?

linux - 获取 shell 脚本的 pid 并将其保存到一个锁定文件中

linux - Bash:消除冗余路径组件?

jquery - jq 命令检查 json 数组响应是否具有使用 shell 脚本批准的特定用户名和状态

linux - 如何对 linux bash * 字母数字字符串进行排序