【问题标题】:Shell scripts doesn't pass arguments to applicationShell 脚本不会将参数传递给应用程序
【发布时间】:2014-12-09 13:23:28
【问题描述】:

我有这个 1 行 shell 脚本:

"/Applications/TexturePacker.app/Contents/MacOS/TexturePacker" "PSD_files/default_atlas/" --sheet "default_atlas.png" --format xml --data "default_atlas.xml" --premultiply-alpha

当我直接运行命令时,它按预期工作 - TexturePacker 应用程序使用指定的参数启动,但是当我将完全相同的行放入 .sh 文件并执行它时,TexturePacker 没有收到参数(帮助消息显示好像应用程序在没有参数的情况下启动)。

如何从 .sh 文件运行相同的命令?

PS:我尝试在结果相同的行之前添加#!/bin/sh#!/bin/bash...

【问题讨论】:

    标签: macos bash shell


    【解决方案1】:

    编辑:正如您在回复中提到的,脚本文件中的行结尾有问题。 当您通过 bash -x 运行它时,它将在调试模式下运行,让您可以选择查看 shell 脚本正在执行的所有操作。 所以,如果你仍然有问题,试试这个并复制粘贴它的输出。

    #!/bin/bash -x 
    /Applications/TexturePacker.app/Contents/MacOS/TexturePacker PSD_files/default_atlas/ --sheet "default_atlas.png" --format xml --data "default_atlas.xml" --premultiply-alpha
    

    换句话说,你的代码没有问题,只是你的文件格式。

    【讨论】:

    • 如果我添加 #!/bin/bash -x 输出完全丢失(即使是简单的 echo "a")
    • 这意味着你有一个更严重的问题。如果您以交互方式执行测试脚本会发生什么: bash -x testscript.sh ? (您使用的是 /bin/bash 对吗?不是 /bin/sh ?)
    • 我想我找到了问题,我正在使用 Adob​​e 的 jsx 来编写文件,它似乎将行尾转换为 Windows 样式,这让 bash 感到困惑......
    • 这是一个澄清请求,而不是答案。
    • 啊,谢谢,不知道,但是看到代码没有问题,我修改了我的回复。固定:p
    【解决方案2】:

    脚本文件是使用插入 Windows 样式行结尾的 Adob​​e JSX File 类创建的,即使 lineFeed 属性设置为“Macintosh”。这件事让 shell 感到困惑,输出完全丢失(即使在调试模式下)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-12-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多