【问题标题】:Platypus error setting variables鸭嘴兽错误设置变量
【发布时间】: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


【解决方案1】:

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

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

脚本已更正,正在运行!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-10-12
    • 1970-01-01
    • 2012-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-31
    • 1970-01-01
    相关资源
    最近更新 更多