我的目标是提供一个命令行实用程序,用于将PowerPoint文件转换为PDF。我尝试过使用unoconv的解决方案,但是它们不能正确进行转换。我找到了一个不错的workflow,并另存为export_pdf.workflow
。我可以从终端在文件上运行它:
/usr/bin/automator -i <some_pptx_file> export_pdf.workflow
这是我想要的。
我想将其制作为Shell脚本,但是问题是知道将工作流放在哪里。我包括了用法字符串(不是真正的MWE)是为了帮助表达意图。
#!/usr/bin/env bash
function usage()
{
cat <<HEREDOC
Usage: $progname [--delete] PPTX_FILENAME
Converts PPTX_FILENAME into a PDF by launching PowerPoint.
PDF is produced in same directory as PPTX_FILENAME.
optional arguments:
-h, --help show this help and exit
HEREDOC
}
while true; do
case "$1" in
-h | --help ) usage; exit; ;;
-- ) # end argument parsing
shift; break;;
* ) break;;
esac
done
# This is the line I have a question about
/usr/bin/automator -i $1 export_pdf.workflow
这很好,提供,我从包含export_pdf.workflow
的目录中运行它。理想情况下,我希望将其分发到一个二进制文件中,但是我不认为我也不应将export_pdf.workflow
之类的不可执行文件也移到bin
目录中。
在这种情况下不起作用的解决方案(或者至少我正在寻找更好的解决方案!)
export_pdf.workflow
上放置一个Shebang并使其可执行:以Apple的真正方式,这实际上是一个目录,而不仅仅是传递给Automator的单个文件。 除了我的特定用例之外,我要解决的问题是我有一个带有许多参数的文件,并且有一个用例,其中我想提供一些文件作为参数默认情况下(例如,我一直想指定一个配置文件)。
在哪里放置some_local_file(在脚本本地,而不是在文件执行的地方)的“正确”或“可接受”位置,以便我可以将以下脚本放在/usr/local/bin/
或将包含目录添加到路径:
#!/usr/bin/env bash
some_program -c some_local_file $1
答案 0 :(得分:0)
我建议将您的脚本和 some_local_file 放在同一文件夹中。 SCRIPTPATH
可以在您的脚本中定义:
#!/usr/bin/env bash
SCRIPTPATH=$(dirname "$0")
LOCALFILE="$SCRIPTPATH/some_local_file"
some_program -c "$LOCALFILE" "$1"
此外,我不会将脚本和文件放在/usr/local/bin/
下。相反,我将它们放置在~/Script/
之类的地方。为了在任何地方执行此脚本,请更新.bashrc
中的 PATH 变量:
export PATH="$PATH":${HOME}/Script
希望我的建议可以给您提示以解决您的问题。祝你好运!