在applescript中组合两个脚本

时间:2013-06-28 13:34:22

标签: applescript backup

我是AppleScript的新手,我的新外置备份硬盘让我有必要使用它。由于它非常嘈杂,我想编写一个安装磁盘的脚本(如果已卸载),运行备份然后再次弹出备份磁盘(代码A)。到现在为止还挺好。为了在备份完成后弹出磁盘,我找到了一段代码来检查进程是否仍在运行(代码B)。如果备份进程(backupd)仍处于活动状态,则返回1;如果完成,则返回0 我现在正在努力将这两件作品结合起来。如果备份仍在运行,我希望代码B在备份开始后继续检查,如果完成,请转到下一步并弹出磁盘。

我只是无法在代码A中运行代码B,并且所需的循环让我感到困惑。任何帮助真的非常感谢!!我无法想象这对我的想象力来说太过狡猾了谢谢你帮助我恢复和平与宁静

代码A:

  

将myVolumeLabel设置为“Time Machine”

     

告诉申请人“Finder”
    设置diskDev做shell脚本“diskutil list | grep \”“& myVolumeLabel&”\“| grep -o>'disk [0-9] *'”
    如果没有(磁盘myVolumeLabel存在)那么

     

做shell脚本“diskutil mountDisk”& diskDev
    做shell脚本“/System/Library/CoreServices/backupd.bundle/Contents/Resources/backupd-> helper> / dev / null 2>& 1&”

     

(*检查备份进程是否仍在运行应该转到此处我想。*)

     

否则     做shell脚本“diskutil eject / Volumes /'Time Machine'”& diskDev

     

结束如果

     

告诉

代码B

  

on check_process(marker)
    将the_processes设置为(执行shell脚本“ps -A”)
    return(the_processes包含标记)
  结束check_process

     

如果check_process(“/ backupd”)那么     将x设为“1”
  否则
    将x设为“0”
  结束如果
  ---显示对话框x按钮{“确定”}默认按钮1

Mac OS X(10.6.8)

1 个答案:

答案 0 :(得分:0)

在我看来,你想要做的是相当低级的“系统内容”,而且更多的代码应该在shell中完成。

我正在学习AppleScript和Unix shell脚本(确切地说是bash shell,这是OS X中的默认shell)。

这里的大多数AppleScript实际上都是AppleScript内部的shell脚本。

在这种情况下,正确作业的正确工具是shell脚本。

你现在可能不想学习整个'其他编程语言,所以我会给你一些想法。

如果您使用&符号“&”结束shell命令在引号内,AppleScript将不会等待shell脚本完成,而是立即返回,将进程放在一个单独的线程上并返回进程ID。

如果您没有使用&符号终止shell命令,那么AppleScript将等待命令完成后再继续。

您可以尝试以下实验。在Terminal.app中输入以下命令:

睡10个

在终端控制回来之前需要10秒钟。

如果键入以下命令,

睡10&

您将立即获得控制权并将获得流程ID以参考您已启动的流程。

嗯,再次,在我看来,整个脚本最好用bash脚本编写,可能使用一点Automator或AppleScript来启动。

Mac shell(bash)教程:
http://tidbits.com/article/7003

- 凯德尔 Let me be your guide