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

如何正确引用含引号的Shell命令并修复SC2046警告?

修复ShellCheck SC2046警告:正确处理嵌套命令的引用

原代码触发ShellCheck警告:

here=$(dirname $(realpath "$0" 2> /dev/null || grealpath "$0"))
               ^-- SC2046 (warning): Quote this to prevent word splitting.

安全写法

将内层命令替换的结果用双引号包裹,避免路径中的空格或特殊字符引发单词拆分:

here=$(dirname "$(realpath "$0" 2> /dev/null || grealpath "$0")")

原因说明

SC2046警告的核心问题是:当realpath或grealpath返回包含空格、制表符或通配符的路径时,未加引号的命令替换会触发单词拆分,导致dirname接收到多个不完整的路径片段,进而输出错误结果。

给内层$(...)添加双引号后,Shell会将整个路径作为单个参数传递给dirname,无论路径中包含什么特殊字符,都能保证dirname正确解析父目录。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 11:02:04