2016-12-02 1 views
0

私は一時PDFファイルを作成し、それをSkimで開き、それを削除して終了するbashスクリプトを持っています。スクリプトの最後の行は、次のとおりです。これが正常にスキムミルクでPDFを開いたが、その後、私は脱脂ウィンドウを閉じた後も、スクリプトが立ち往生して削除コマンドを実行していない`open`コマンドはいつ終了しますか?

open -a Skim -W "$PDFFILE" 
rm "$PDFFILE" 

。ウィンドウを閉じると、どうすれば最後の行に移動することができますか?

答えて

2

openこの場合(-W)は、アプリケーションが終了するまで終了しません。明らかにウィンドウを閉じるだけでスキムは終了しません。実際にアプリケーションを終了させる必要があります。

+0

ウィンドウを閉じるときに終了する別のオプションはありますか? Skimを別のドキュメントで開いている場合は、無関係なプロセスを終了させるためにウィンドウを閉じる必要はありません。 –

+0

'-n'を使用してSkimの新しいインスタンスを開くことができます;終了するにはまだ 'open'を取り止めなければなりませんが、おそらく他の文書も開いている可能性のあるアプリケーションを終了することはありません。 – chepner

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 
1

別の未テストソリューション。あなたはスキムは、削除を行うに出てまで待っている気が、依然として継続(または終了)するスクリプトを希望しない場合は、スクリプトを持っているバックグラウンドでopen & rmの操作を行います。順次2つのコマンドを実行します

(open -a Skim -W "$PDFFILE"; rm "$PDFFILE")& 

あなたのスクリプトが続く間、バックグラウンドシェルで実行されます。

+0

素晴らしいアイデア!最後に二重引用符がありません、btw。 –

+1

@ MarkSetchell - 修正済み、ありがとう – CRD

関連する問題