我有一个bash脚本,它创建一个临时PDF文件,在Skim中打开它,然后将其删除并退出。脚本的最后几行是:
open -a Skim -W "$PDFFILE"
rm "$PDFFILE"
这样可以在Skim中成功打开PDF,但即使在我关闭Skim窗口后,脚本也会卡住并且不会执行remove命令。当我关闭窗口时,如何让它移动到最后一行?
答案 0 :(得分:2)
int b=2
(open
)不会退出,直到应用程序指示退出。简单地关闭一个窗口显然不会退出Skim;你必须确保你真的退出了申请。
答案 1 :(得分:1)
另一种未经测试的解决方案。如果您不介意等到Skim退出进行删除但仍希望您的脚本继续(或退出)让脚本执行open
& rm
在后台:
(open -a Skim -W "$PDFFILE"; rm "$PDFFILE")&
这将在脚本继续运行时在后台shell中顺序运行这两个命令。
答案 2 :(得分:0)
如果你跑:
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
done