Applescript 终端退出而不执行操作

Applescript 终端退出而不执行操作,applescript,Applescript,我制作了一个脚本,其中有一个代码块启动终端,使用FTP从服务器检索图片 当我在脚本编辑器下运行脚本时,一切正常:脚本启动终端,打开FTP会话,设置目标路径,获取文件,从服务器上删除它们,关闭连接,等待终端活动结束,然后退出 但当我以应用程序的形式运行脚本时,大约90%的情况下,应用程序启动终端,然后终端立即退出。当终端似乎正确地“获取”FTP命令时,连接完成,获取文件等等。完美地但这种情况只发生在少数情况下 下面是我为这部分编写的最后一个代码: tell application "Termi

我制作了一个脚本,其中有一个代码块启动终端,使用FTP从服务器检索图片

当我在脚本编辑器下运行脚本时,一切正常:脚本启动终端,打开FTP会话,设置目标路径,获取文件,从服务器上删除它们,关闭连接,等待终端活动结束,然后退出

但当我以应用程序的形式运行脚本时,大约90%的情况下,应用程序启动终端,然后终端立即退出。当终端似乎正确地“获取”FTP命令时,连接完成,获取文件等等。完美地但这种情况只发生在少数情况下

下面是我为这部分编写的最后一个代码:

  tell application "Terminal"
    activate

    -- Wait for "no more activity"
    set frontWindow to window 1
    repeat until busy of frontWindow is false
        delay 1
    end repeat

    -- Perform FTP actins
    set shell to do script "ftp -i ftp://user_ftp:pass_ftp@host_ftp/" in window 1
    do script "lcd ~/Desktop/tmp_instagram/" in shell
    do script "mget *.jpg" in shell
    do script "mdel *.jpg" in shell
    do script "bye" in shell
    -- Wait for no more activity
    set frontWindow to window 1
    repeat until busy of frontWindow is false
        delay 1
    end repeat

end tell

tell application "Terminal" to quit saving no -- Saving no to avoid conf alert
为了避免你浪费时间,我做了一些测试,但没有成功:

  • 将整个FTP命令设置在一行中,以便
  • 在ativate之后延迟5次,而不是在busy上重复
  • 在ftp命令之后放置一个延迟

实际上,终端似乎在收到FTP命令(立即打开和关闭)之前关闭

多亏了Mark Setchell的评论,我没有使用“shell”命令就尝试了,事实上它似乎是关键。下面是一段正确运行的代码:

    tell application "Terminal"
    activate

    set w to window frontmost
    do script "ftp -i ftp://xxxxx:yy@dddddd/" in w
    do script "lcd ~/Desktop/tmp_aarecno_instagram/" in w
    do script "mget *.jpg" in w
    do script "mdel *.jpg" in w
    do script "bye" in w

    set frontWindow to window 1
    repeat until busy of frontWindow is false
        delay 1
    end repeat

end tell

你为什么要启动终端?@Mark直接使用shell d'ont work。但我认为set shell和终端是打开的这一事实之间存在冲突。我发现了更好的选择:不使用shell,而是在终端下执行脚本,看起来还可以。