0

我有一个从终端运行时可以完美运行的 shell 脚本

sh script.sh [name_of_the_pdf_.pdf]

该脚本读取给定 .pdf 的文件名,并从文件名的第一个字符中设置一些变量:

例如,以下变量从文件名中读取前两个字符并将它们存储为变量:

VAR_ENDPAGE=${1:0:2}

然后脚本从命令行运行一个 java 程序,从这些存储的变量中传递参数:

java -jar jpdftweak.jar -i7-"${VAR_ENDPAGE[@]}" $1 -output ~/OUTPUTFILE.pdf

假设[name_of_the_pdf.pdf]=2350.pdf生成的命令是:

java -jar jpdftweak.jar -i7-23 $1 -output ~/OUTPUTFILE.pdf

问题是当我在鸭嘴兽中使用这个脚本时。我创建了一个 Droplet,当我删除“2350.pdf”文件时,程序使用该文件作为$1参数运行脚本。一切似乎都很好,但似乎无法正确创建变量。例如,上面的变量返回:/U,所以命令是:

java -jar jpdftweak.jar -i7-U/ $1 -output ~/OUTPUTFILE.pdf

剧本完全一样。所以错误是在变量设置过程中。我尝试使用反引号,但似乎一切正常……</p>

U/是从哪里来的?

4

1 回答 1

0

好吧,一位朋友给我一个建议......并解决了它。

问题是:在终端中,文件只有名称和扩展名,但是在启动液滴时,文件还将包含路径,位于 /Users/etc... 脚本将从文件名中加载前两个字符,但是在液滴中,文件名以路径开头,所以这给了我“/U”错误“/U”sers…等。

脚本更正,并运行!

于 2018-01-01T20:10:51.750 回答