在AppleScript中运行时查看shell脚本的输出或进度

时间:2010-11-08 18:09:20

标签: shell applescript

我正在研究一个运行以下内容的简单AppleScript ......

do shell script "diskutil partitionDisk /dev/disk1 1 APM JHFS+ Test 1G"

这是一个更大的脚本的一部分。以上工作正常但有没有办法查看进度?任何事情都会真的做到,最好是终端窗口内的实际命令会很好。

由于

2 个答案:

答案 0 :(得分:3)

我经常需要在运行时看到执行shell脚本命令以及AppleScript脚本的其他各个阶段的进度。我为做shell脚本所做的是将输出记录到日志文件中,然后使用名为MKConsole的程序在桌面上显示它。例如:

do shell script "diskutil verifyPermissions // &> /output.log"

在上面的命令中,diskutil将启动并开始运行并将标准输出记录到我创建的名为output.log的日志文件中,该文件位于/。它不会显示您在终端中看到的0%... 10%... 20%进度指示器,但它确实显示了所有其他输出。

然后我配置MKConsole的首选项来读取此日志文件,然后实时显示我桌面上该文件的所有新日志消息。

如果您需要进行非shell脚本命令并需要记录AppleScript活动,则可以使用 logger 命令。例如:

do shell script "logger -f /output.log The current count is: " & some_variable

如果您的AppleScript运行了很长时间并使用了重复循环,并且您想知道脚本在运行时处于什么完成阶段 上面的 logger 命令是获取进度反馈的好方法。我通常在结束重复上方的脚本底部引入一个 logger 命令,这样它就是它在循环迭代中做的最后一件事。

logger 命令方法也适用于MKConsole,以便您可以在桌面上实时查看输出。

答案 1 :(得分:1)

调用终端并让终端运行diskutil:

"xterm -e 'diskutil partitionDisk /dev/disk1 1 APM JHFS+ Test 1G'"  是传递给shell的命令行,并让xterm(1)显示diskutil输出。可以使用其他终端(比xterm),并且可以控制窗口大小字体和颜色:请参阅终端的手册页。

显示进度的另一种方法可能是在窗口中运行整个脚本(而不仅仅是diskutil部分)。