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

Bash中使用$(...)语法的单行echo命令失效问题求助

问题出在你给单行写法里的双引号加了多余的转义。在Bash的双引号字符串中,$()内部的双引号不需要用\"转义——外层的双引号已经让整个字符串处于引号解析上下文,$()会被单独执行,内部的双引号可以直接用来包裹变量,无需转义。

正确的单行命令写法是:

echo "Sourcing $(readlink -f "${BASH_SOURCE[0]}")"

原因说明

你原来的错误写法中,\"${BASH_SOURCE[0]}\"会让Bash把转义后的双引号当成字面量字符,导致readlink收到的参数是带引号的路径(比如"/path/to/script.sh"),而非实际的路径字符串,因此无法正确解析脚本的绝对路径。

两段式写法能正常运行,是因为${BASH_SOURCE[0]}外面的双引号直接生效,没有转义干扰;单行写法只要保持内部双引号不转义,就和两段式的执行逻辑完全一致——$()会执行readlink -f "${BASH_SOURCE[0]}"获取脚本绝对路径,再替换到echo的输出字符串中。

内容的提问来源于stack exchange,提问作者basickarl

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 17:55:19