在 docker 命令中转义撇号
Escape apostrophe in docker command
我正在尝试按以下方式使用 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
我对匹配的单引号字符串进行了编号。中间是文字单引号。
在版本 3 中,您可以指定一个命令数组。
您可以在第一个单引号之前使用 $ 以便能够在命令中使用转义单引号。
所以:
docker exec -u root airflowdags_webserver_1 bash -c "airflow variables --set my_var $'{\"test\": \"test\'2\"}'"
我正在尝试按以下方式使用 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
我对匹配的单引号字符串进行了编号。中间是文字单引号。
在版本 3 中,您可以指定一个命令数组。
您可以在第一个单引号之前使用 $ 以便能够在命令中使用转义单引号。
所以:
docker exec -u root airflowdags_webserver_1 bash -c "airflow variables --set my_var $'{\"test\": \"test\'2\"}'"