Shell脚本不会将参数传递给应用程序

时间:2014-12-09 13:23:28

标签: macos bash shell

我有这个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并获得相同的结果......

2 个答案:

答案 0 :(得分: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

换句话说,您的代码没有任何问题,只有您的文件格式。

答案 1 :(得分:1)

脚本文件是使用插入Windows样式行结尾的Adobe JSX File类创建的,即使lineFeed属性设置为" Macintosh"。这个东西混淆了shell,输出完全丢失了(即使在调试模式下)