2016-10-24 9 views
2

Ich habe ein Shell-Skript, das ein AppleScript aufruft. AppleScript führt einige automatisierte Tests für eine Software mit einem bestimmten Dokument durch.Make Shell Skript warten bis Applescript beendet?

Nach dem Apple beendet seine Ausführung ich das Dokument in einem anderen Ordner mit mv Befehl in meinem Shell-Skript zu bewegen und dann bewege ich das nächste Dokument, so dass Apple diese Tests mit diesem neuen Dokument ausführen kann. Aber sobald AppleScript aufgerufen wird, verschiebt es das Dokument in einen anderen Ordner, ohne dass die Tests für dieses Dokument ausgeführt werden.

Wie kann ich in meinem Shell-Skript warten, damit das Dokument erst verschoben wird, nachdem das AppleScript alle Tests beendet hat?

1. mv $file "/path/to/file" (Moving the document to the execution folder) 
2. osascript /pathto/applescript.app (it will use this execution folder to run its tests) 
3. mv "/path/to/file" /Users/Desktop/tempfolder (moving the document on which the test is completed to a temp folder) 

Schritte 2 und 3 gehen nacheinander ohne Wartezeit, damit das Dokument, auf dem der Test ausgeführt werden soll bewegt wird, bevor der Test abgeschlossen ist.

+0

Warum diese -1. Bitte sagen Sie mir, dass ich bei Bedarf etwas modifizieren kann. –

+2

Wahrscheinlich wollte der Down-Voter etwas "Code" sehen, womit ich gemeint habe, was auch immer Sie verbal erklärt haben und auch etwas "Code" bei Ihren Versuchen, das Problem zu beheben. – Inian

+0

Wait löst das Problem, aber es ist keine gute Lösung, da der Test für bestimmte Dateien länger dauern kann. Ich habe es versucht, aber es wird nicht funktionieren, selbst wenn das Applezip im Hintergrund läuft, wird es nicht die Datei haben, die es für die Tests benötigt. –

Antwort

0

Normalerweise werden Shell-Befehle nacheinander ausgeführt. Das heißt, die nächste Anweisung wird nicht ausgeführt, bis die aktuelle ausgeführt wurde, unabhängig davon, ob sie erfolgreich war oder nicht. Wenn dies der Fall ist, können Sie Ihr Skript einfach einen Befehl nach dem anderen schreiben.

Ich denke, dass osascript /pathto/applescript.app einige Aufgaben in einem anderen Prozess ausführen, und dass osascript von seiner eigenen Ausführung zurückgibt, während der Prozess "was Sie wollen" noch ausgeführt wird.

Was Sie tun könnten, wäre zu ps -aux | grep applescript.app dann holen Sie sich die PID, und machen Sie eine Weile danach, um zu sehen, wenn das Programm aufhören. Aber das scheint übertrieben und Sie kennen den Ausführungsnamen der applescript.app nicht.

Wenn ich falsch bin irgendwo bitte jemand korrigieren Sie mich

+1

Bitte begleiten Sie downvotes eines Kommentars –

0

Wie Mayerz sagte tun Shell-Skript-Befehl für Ende Anweisung wartet auf nächsten Apple Befehl zu bewegen. In jedem Fall können Sie auch den Block "Berücksichtigung der Antragsantwort" verwenden. Hier ist ein Beispiel mit einem Umzug in Finder:

set A to ("myVolume:Users:Me:Documents:sample.mov") as alias 
set B to ("Users:me:Desktop:") as alias 
tell application "Finder" 
    considering application responses 
     move A to B 
    end considering 
end tell 
display dialog "done" 

ähnliches Beispiel mit do shell script:

set A to ("myVolume:Users:Me:Documents:sample.mov") as alias 
set B to path to desktop 
set AU to POSIX path of A 
set BU to (POSIX path of B) & "test2.mov" 
tell application "Finder" 
    considering application responses 
     do shell script "mv " & (quoted form of AU) & " " & (quoted form of BU) 
    end considering 
end tell 
display dialog "done" 
+0

Ich dachte, das gleiche vorher zu tun, aber ich war nicht in der Lage, die richtige Syntax dafür zu finden. Angenommen, ich möchte nur die Dateien verschieben, die die Erweiterung haben.mov, welche Ergänzungen ich in Ihrer vorgeschlagenen Lösung machen muss. Ich versuchte mit * .mov, aber es hat nicht funktioniert. –

+0

um alle * .mov zu erhalten, hängt die Lösung davon ab, ob Sie die Finder-Methode oder die Stahlskriptmethode verwenden. Ich bin ziemlich einfach mit Finder-Methode, weil Sie Liste der Datei mit etwas wie "jede Datei des Ordners xxx, dessen Namenserweiterung ist" mov ". – pbell

+0

" unter Berücksichtigung der Anwendung Antwort "nicht das Problem entweder zu lösen. Es ist immer noch springen zu dem Befehl move, sobald der Test durch das AppleScript ausgelöst wird –

Verwandte Themen