使用Mac OS X中的Automator脚本弹出所有磁盘和dmg

时间:2013-12-18 22:08:46

标签: macos shell unix disk automator

我创建了一个Automator服务来弹出Mac OS X中的所有磁盘。

find /dev -name "disk[1-9]" -exec diskutil eject {} \;

这样可行,但我仍然会收到错误消息:

“操作”运行Shell脚本“遇到错误。”

任何人都知道为什么会这样吗?

1 个答案:

答案 0 :(得分:0)

像这样运行:

find /dev/disk[1-9] -exec diskutil eject {} \;

问题是,至少在我的Mac上,我得到了这个:

$ find /dev -name disk[1-9]
find: /dev/fd/3: Not a directory
find: /dev/fd/4: Not a directory
/dev/disk2

find尝试进入/dev/fd/3哪些出现作为目录但不是,因此您会看到错误消息Not a directory。因此,即使find成功执行diskutil eject匹配模式的文件,由于进程中遇到错误,它将以状态码1退出,表示错误。

通过使用我提出的解决方案,find只考虑文件/dev/disk[0-9],它不会尝试进入子目录,因为在这种情况下没有。

<强>更新

最后一个命令的退出代码存储在$?变量中。例如:

$ find /dev -name disk[0-9]
find: /dev/fd/3: Not a directory
find: /dev/fd/4: Not a directory
/dev/disk2
$ echo $?
1
$ find /dev/disk[0-9]
/dev/disk2
$ echo $?
0

使用for循环的另一种方法是:

for f in /dev/disk[1-9]; do diskutil eject $f; done