我正在研究一个运行以下内容的简单AppleScript ......
do shell script "diskutil partitionDisk /dev/disk1 1 APM JHFS+ Test 1G"
这是一个更大的脚本的一部分。以上工作正常但有没有办法查看进度?任何事情都会真的做到,最好是终端窗口内的实际命令会很好。
由于
答案 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部分)。