如何使用Shell在MacOSX中逐个启动dmg?

如何使用Shell在MacOSX中逐个启动dmg?,macos,bash,shell,sh,Macos,Bash,Shell,Sh,我正在使用MacOSX10.8 MountainLion 我正在准备一个Shell脚本来逐个启动3个dmg文件 我想在安装另一个dmg后,逐个启动dmg文件 我正在脚本中使用wait函数,但它正在等待一个dmg被关闭 请提出解决方案。以下是一种方法,您可以打开dmg文件,复制应用程序并卸载每个卷的卷: for f in *.dmg: do VOLUME=$(hdiutil attach "$f" | tail -1 | awk '{print $3}') cp -r "$VOLU

我正在使用MacOSX10.8 MountainLion

我正在准备一个Shell脚本来逐个启动3个dmg文件

我想在安装另一个dmg后,逐个启动dmg文件

我正在脚本中使用wait函数,但它正在等待一个dmg被关闭


请提出解决方案。

以下是一种方法,您可以打开dmg文件,复制应用程序并卸载每个卷的卷:

for f in *.dmg: do
    VOLUME=$(hdiutil attach "$f" | tail -1 | awk '{print $3}')
    cp -r "$VOLUME/"*.app /Applications/
    diskutil unmount "$VOLUME"
done

要在dmg文件的目录中运行。

请查看Mac OS X命令。它将根据其后缀自动打开一个带有已注册Mac程序的文件

$ open foo.dmg   # Opens and mounts the disk image in Finder.

它将返回到终端中的当前进程,这样您的shell脚本就可以继续(尽管Mac上的活动应用程序将是Finder)。您可以使用
umount/Volumes/
卸载磁盘映像。AWord'o警告:卷的名称可能与DMG文件的名称不同。

not block表示什么?我听不懂你的话?嗯…我不确定我是否理解你的问题谢谢你的启发,但是如果卷名包含空格,
awk
表达式不能正确工作。这是我修改过的版本:
awk'{$1=$2=“”;gsub(/^+/,“”,“,$0);print$0}'
噢,我的……awk是一种痛苦,我不确定我是否真的可以接受它,并且只通过阅读您所写的内容来编辑我的答案:-扫描您澄清了您的问题吗?你拿DMG干什么?您只是将内容复制到
/应用程序中,还是在每个应用程序中执行某些操作?dmg是一个“卷”文件,所以说已安装了
dmg
毫无意义。您不安装dmg,您可以复制内容或在中运行安装应用程序。我有3个dmg文件,我想启动第一个,在第一个文件中,我会将内容复制到/应用程序,关闭第一个dmg后,第二个dmg会自动启动,这是我的要求。为什么不启动所有3个脚趾,然后拖动?