首页 > 解决方案 > Bash 在运行命令时添加了额外的单引号

问题描述

通过脚本运行命令时,BashTLS_CERT用额外的单引号扩展变量,这使我的命令失败。

我已将简化代码放在这里以获得可读格式

任何人都可以建议如何避免这种情况。

代码:

TLS_CERT="--set-file \"global.vertica.cert.vertica-ca\.crt\"=./vertica-1030.crt"

helm install opsb -n tns opsbridge-suite-2020.08.0-1-SNAPSHOT.tgz -f vert-opsb-values.yaml $TLS_CERT

预期输出:

helm install opsb -n tns opsbridge-suite-2020.08.0-1-SNAPSHOT.tgz -f vert-opsb-values.yaml  --set-file "global.vertica.cert.vertica-ca\.crt"=./vertica-1030.crt

实际输出:

helm install opsb -n tns opsbridge-suite-2020.08.0-1-SNAPSHOT.tgz -f vert-opsb-values.yaml  --set-file '"global.vertica.cert.vertica-ca\.crt"=./vertica-1030.crt' 

标签: linuxbashshellsingle-quotes

解决方案


像往常一样处理此类问题,请使用 bash 数组。

tls_cert=( --set-file global.vertica.cert.vertica-ca.crt=./vertica-1030.crt )
program ... "${tls_cert[@]}"

推荐阅读