使Shell脚本等待applescript完成?

使Shell脚本等待applescript完成?,shell,unix,applescript,Shell,Unix,Applescript,我有一个调用AppleScript的shell脚本。AppleScript使用给定文档在软件上运行一些自动测试 在AppleScript完成执行后,我将使用shell脚本中的mv命令将文档移动到其他文件夹,然后移动下一个文档,以便AppleScript可以使用此新文档运行这些测试。但一旦调用AppleScript,它就会将文档移动到另一个文件夹,而不会在该文档上运行这些测试 如何在shell脚本中等待,以便仅在AppleScript完成所有测试后移动文档 1. mv $file "/path/t

我有一个调用AppleScript的shell脚本。AppleScript使用给定文档在软件上运行一些自动测试

在AppleScript完成执行后,我将使用shell脚本中的
mv
命令将文档移动到其他文件夹,然后移动下一个文档,以便AppleScript可以使用此新文档运行这些测试。但一旦调用AppleScript,它就会将文档移动到另一个文件夹,而不会在该文档上运行这些测试

如何在shell脚本中等待,以便仅在AppleScript完成所有测试后移动文档

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)

步骤2和3一个接一个地进行,没有等待,因此在测试完成之前移动要运行测试的文档。

通常,shell命令按顺序执行。也就是说,下一条语句在当前语句执行完毕之前不会运行,无论它是否成功。因此,如果是这种情况,您只需一个接一个地编写脚本

我猜
osascript/pathto/applescript.app
在另一个进程中运行一些任务,并且osascript在执行“您想要的”的进程仍在运行时从自己的执行中返回

您可以做的是
ps-aux | grep applescript.app
然后从中获取pid,然后执行一个while循环以查看程序何时停止。但这似乎设计过度,而且您不知道applescript.app的执行名称


若我在某个地方出错了,请任何人纠正我

,正如Mayerz所说,do shell脚本命令正在等待指令的结尾移到下一个AppleScript命令。在任何情况下,您也可以使用“考虑应用程序响应”组。以下是一个使用移入查找器的示例:

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"
do shell脚本的类似示例:

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"

为什么是-1。请告诉我,如果需要,我可以修改任何内容。可能投票人希望看到一些“代码”,我指的是您口头解释的任何内容,以及您尝试修复问题时的一些“代码”。等待解决了问题,但这不是一个好的解决方案,因为测试可能需要更多时间用于特定文件。我试过了&但它不起作用,因为即使让applescipt在后台运行,它也不会有运行测试所需的文件。最近这个问题的答案()看起来非常适合您的情况,这就是我在评论中提到的。我不能在后台运行它,因为一旦执行下一步,即步骤3,文件就会被移动,而步骤2没有要处理的文件。我以前也想过这样做,但我找不到正确的语法。如果假设我只想移动那些扩展名为.mov的文件,那么我必须在您建议的解决方案中添加哪些内容。我尝试使用*.mov,但没有效果。要获得所有的*.mov,解决方案将取决于您是使用Finder方法还是steel script方法。我很容易使用Finder方法,因为您可以使用类似“获取文件夹xxx的每个文件,其扩展名为“mov”的内容”构建文件列表“也没有解决问题。当applescript触发测试时,它仍然会跳转到move命令。哪个测试?没有测试。您的“mv”命令应位于考虑…/结束考虑块内。