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

Shell脚本中如何指定变量存储文件夹的同级文件夹?

解决Texture Packer路径空格与通配符失效问题

你的问题核心在于双引号包裹了通配符*.tps,导致Shell不会将*.tps展开成目录下的实际文件,而是把它当作一个字面文件名传递给Texture Packer,自然会找不到目标文件。

下面给你两种可行的解决方法:

方法1:拆分路径与通配符,让Shell正确展开

把包含空格的目录路径用双引号保护,通配符放在引号外面,这样Shell会先找到目录下所有.tps文件,再逐个传递给Texture Packer:

TP=/usr/local/bin/TexturePacker
# 正确写法:目录路径加引号,通配符在外
"${TP}" "${PROJECT_DIR}/../Texture Packer"/*.tps

方法2:用find命令精准定位文件

如果需要更灵活的文件查找(比如递归子目录),可以用find命令来传递所有匹配的文件,它会自动处理带空格的路径:

TP=/usr/local/bin/TexturePacker
# -exec {} + 把找到的文件批量传递给TexturePacker
find "${PROJECT_DIR}/../Texture Packer" -name "*.tps" -type f -exec "${TP}" {} +

额外注意:避免无匹配时的错误

如果Texture Packer目录下没有.tps文件,方法1会把*.tps当作参数传递导致报错。可以临时开启nullglob选项让Shell在无匹配时忽略通配符:

TP=/usr/local/bin/TexturePacker
# 开启nullglob,无匹配时通配符会被移除
shopt -s nullglob
"${TP}" "${PROJECT_DIR}/../Texture Packer"/*.tps
# 关闭nullglob恢复默认行为
shopt -u nullglob

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 07:33:52