首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >`open`命令什么时候终止?

`open`命令什么时候终止?
EN

Stack Overflow用户
提问于 2016-12-02 23:09:06
回答 3查看 47关注 0票数 0

我有一个bash脚本创建一个临时PDF文件,打开它在Skim,然后删除它并退出。脚本的最后几行是:

代码语言:javascript
复制
open -a Skim -W "$PDFFILE"
rm "$PDFFILE"

这会成功地在Skim中打开PDF,但即使在我关闭Skim窗口之后,脚本也会被卡住,并且不会执行删除命令。当我关闭窗口时,如何让它移动到最后一行?

EN

回答 3

Stack Overflow用户

发布于 2016-12-02 23:13:25

本例中的open (-W)直到指定的应用程序退出时才会退出。简单地关闭一个窗口显然不能退出Skim;你必须确保你真的退出了应用程序。

票数 2
EN

Stack Overflow用户

发布于 2016-12-03 00:02:58

另一个未经测试的解决方案。如果您不介意等到Skim退出后再执行删除操作,但仍然希望脚本继续(或退出),请让脚本在后台执行open & rm

代码语言:javascript
复制
(open -a Skim -W "$PDFFILE"; rm "$PDFFILE")&

这将在您的脚本继续运行的同时,在后台shell中顺序运行这两个命令。

票数 1
EN

Stack Overflow用户

发布于 2016-12-02 23:56:03

如果您运行以下命令:

代码语言:javascript
复制
osascript -e 'tell application "Skim" to documents'

它将告诉您正在Skim中编辑的文档的列表。

因此,如果您知道您告诉Skim打开的文档的名称,那么您可能会在bash中的一个循环中等待(可能会有短暂的延迟),直到该文档不再打开-即不再在列表中。

它看起来像这样:

代码语言:javascript
复制
#!/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
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40935301

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档