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

在Linux Shell中使用含空格变量作为jdupes命令参数的问题

解决群晖DS218脚本中jdupes排除路径的变量维护问题

在群晖DS218的bash脚本里,直接用普通字符串变量存储带空格的jdupes排除参数会踩坑——bash的分词机制会把空格当成参数分隔符,导致jdupes识别错误。正确的解法是用数组来维护这些参数,具体操作如下:

1. 用数组定义排除参数

把每个独立的参数项作为数组的一个元素,确保带空格的路径被完整包裹:

# 分行写法,可读性更强
exclude_params=(
  -X
  "nostr:somepath/with spaces"
  -X
  "nostr:and/some other path"
)

# 单行紧凑写法
exclude_params=(-X "nostr:somepath/with spaces" -X "nostr:and/some other path")

2. 调用jdupes时展开数组

用"${exclude_params[@]}"的方式展开数组,这样每个数组元素都会被bash识别为独立的参数,不会因为空格被拆分:

jdupes -rA "${exclude_params[@]}" "/mydir"

为什么之前的方法失败?

不管给普通字符串变量加多少引号,bash在展开变量时都会按空格、制表符等分隔符拆分内容。比如你存的-X nostr:"somepath/with spaces"会被拆成-X、nostr:"somepath/with、spaces"三个独立参数,jdupes自然无法正确解析。而数组可以完整保留每个参数的边界,展开时能精准传递给jdupes。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 03:35:10