我创建了一个Automator服务来弹出Mac OS X中的所有磁盘。
find /dev -name "disk[1-9]" -exec diskutil eject {} \;
这样可行,但我仍然会收到错误消息:
“操作”运行Shell脚本“遇到错误。”
任何人都知道为什么会这样吗?
答案 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