You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Bash如何解析表达式中的嵌套引号?规范写法问询

解析结果

你给出的表达式会被解析为第一种逻辑(Bash中无+拼接符,相邻字符串自动拼接):
""(空字符串) + 未被引号包裹的$(dirname "$0")执行结果 + "/config.sh"(被双引号包裹的固定字符串)

Bash的引号是成对匹配生效的:开头的两个"直接组成了一个闭合的空引用段,后续的$(dirname "$0")不在任何引号范围内,直到遇到下一个"才开启新的引用段包裹/config.sh,所以不是第二种解析逻辑。

这种写法存在安全隐患:如果dirname "$0"返回的路径包含空格、通配符等特殊字符,未被引号包裹的命令替换结果会触发分词和通配符展开,导致config_file赋值错误,甚至引发非预期执行问题。

正确规范写法

应该把整个路径拼接逻辑都包裹在同一组双引号内,既保证命令替换正常执行,也避免特殊字符引发的问题:

config_file="$(dirname "$0")/config.sh"

该写法的实际效果和你提到的第二种逻辑一致,且写法更统一易读,符合Bash变量赋值的最佳实践。

内容的提问来源于stack exchange,提问作者hermit.crab

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 07:24:06