【发布时间】:2017-04-15 09:20:45
【问题描述】:
我有一个从终端运行时完美运行的 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
脚本完全相同。所以错误是在变量设置过程中。我尝试使用反引号,但似乎一切正常……
这个U/来自哪里?
【问题讨论】:
-
我猜你有一个 Unicode/UTF 文件名。尝试暂时将您的输入文件重命名为测试。
-
嗨,马克!谢谢您的回答。问题是脚本使用文件名字符串来传递参数,如果我重命名它,那么脚本就没用了......
标签: string shell variables filenames platypus