【问题标题】:How to specify a sibling folder of a folder mentioned in a variable in a shell script?如何指定 shell 脚本中变量中提到的文件夹的同级文件夹?
【发布时间】:2018-09-13 13:37:20
【问题描述】:

我有一个文件夹路径存储在变量 ${PROJECT_DIR} 中。 我想向上导航到其父文件夹,然后返回到名为 "Texture Packer" 的文件夹,即 ${PROJECT_DIR} 和 "Texture Packer" 是兄弟姐妹。 如何在 shell 脚本中指定它? 到目前为止,我有:

TP=/usr/local/bin/TexturePacker

# create all assets from tps files
${TP} "${PROJECT_DIR}/../Texture Packer/*.tps"

但这是不正确的,因为 Texture Packer 无法检测到路径中的文件。错误信息显示:

TexturePacker:: 错误:无法打开文件 /Users/john/Documents/MyProj/proj.ios_mac/../Texture Packer/*.tps 阅读:没有这样的文件或目录

编辑:以下似乎有效但不干净:

#! /bin/sh
TP=/usr/local/bin/TexturePacker
if [ "${ACTION}" = "clean" ]
then
    # remove sheets - please add a matching expression here
    # Some unrelated stuff
else
    cd ${PROJECT_DIR}
    cd ..
    cd "Texture Packer"

    # create all assets from tps files
    ${TP} *.tps
fi
exit 0

【问题讨论】:

    标签: shell unix osx-elcapitan


    【解决方案1】:

    你在正确的轨道上;问题是通配符(如*.tps)在引号中时不会被扩展。解决方案是将路径的那部分留在引号之外:

    ${TP} "${PROJECT_DIR}/../Texture Packer"/*.tps
    

    顺便说一句,我几乎总是建议不要在脚本中使用cd。很容易忘记当前目录在脚本中的各个点的位置,或者发生错误并且脚本的其余部分运行在错误的位置,或者......此外,您正在使用的任何相对路径(例如,用户作为参数提供的那些)每次您cd 时都会改变含义。基本上,这是出现奇怪错误的机会。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-05-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多