我有一个bash脚本创建一个临时PDF文件,打开它在Skim,然后删除它并退出。脚本的最后几行是:
open -a Skim -W "$PDFFILE"
rm "$PDFFILE"这会成功地在Skim中打开PDF,但即使在我关闭Skim窗口之后,脚本也会被卡住,并且不会执行删除命令。当我关闭窗口时,如何让它移动到最后一行?
发布于 2016-12-02 23:13:25
本例中的open (-W)直到指定的应用程序退出时才会退出。简单地关闭一个窗口显然不能退出Skim;你必须确保你真的退出了应用程序。
发布于 2016-12-03 00:02:58
另一个未经测试的解决方案。如果您不介意等到Skim退出后再执行删除操作,但仍然希望脚本继续(或退出),请让脚本在后台执行open & rm:
(open -a Skim -W "$PDFFILE"; rm "$PDFFILE")&这将在您的脚本继续运行的同时,在后台shell中顺序运行这两个命令。
发布于 2016-12-02 23:56:03
如果您运行以下命令:
osascript -e 'tell application "Skim" to documents'它将告诉您正在Skim中编辑的文档的列表。
因此,如果您知道您告诉Skim打开的文档的名称,那么您可能会在bash中的一个循环中等待(可能会有短暂的延迟),直到该文档不再打开-即不再在列表中。
它看起来像这样:
#!/bin/bash
PDFFILE="/Users/mark/Desktop/OpenCV_2_Computer_Vision_Application_Programming_Cookbook.pdf"
PDFBASE=$(basename "$PDFFILE")
open -a Skim "$PDFFILE" &
while :; do
osascript -e 'tell application "Skim" to documents' | grep "$PDFBASE" || break
sleep 1
donehttps://stackoverflow.com/questions/40935301
复制相似问题