2013-06-28 184 views
0

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

我只是无法获得在代码A中运行的代码B,并且所需的循环也让我困惑了一下。任何帮助真的非常感谢!我无法想象它是棘手的实在太多了我的想象谢谢你帮我恢复和平与宁静

代码A:

集myVolumeLabel以“时间机器”

告诉应用程序“搜索“
集diskDev做shell脚本 ”磁盘工具列表| grep的\“” & myVolumeLabel & “\” | grep的-o> '磁盘[0-9] *'“
如果不是(磁盘myVolumeLabel存在),那么

做外壳脚本 “磁盘工具mountDisk” & diskDev
做外壳脚本 “/System/Library/CoreServices/backupd.bundle/Contents/Resources/backupd->辅助>的/ dev/null的2> ”

(*检查如果backupd进程仍在运行应该在这里,我想。*)

其他 做shell脚本 “磁盘工具弹出/卷/ '时间机器'” & diskDev

结束时,如果

末告诉

代码B

上check_process(标记)
集the_processes(做shell脚本 “PS -A”)
回报(the_processes包含标志)
end check_process

if check_process(“/ backupd”)then
组x为 “1”
别的
组x为 “0”
端如果
---显示对话框X按钮{ “OK”}默认按钮1

的Mac OS X(10.6 .8)

回答

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的外壳(bash)的教程:
http://tidbits.com/article/7003

- Kaydell Let me be your guide

+0

谢谢kaydell的回复和相关信息!我坚持使用shell脚本,并最终实现它的工作......说实话,结果不是很漂亮,但它的工作原理。但还是非常感谢! – Phil