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
相关产品推荐
相关产品推荐

