macOS:如何使用将安装卷设置为变量/启动失速



出于测试目的,我必须在许多不同的机器上安装macOS。我一直在将所需的安装卷硬编码到启动脚本中。但我希望将体积路径设置为一个变量。我得到错误:

找不到目标。

在尝试运行脚本时-一些不相关的部分被省略了。

#!/bin/bash
Boot= diskutil info / | grep "Volume Name:" | awk '{print $3}'
echo $Boot
./startosinstall --volume /Volumes/$Boot --agreetolicense --rebootdelay 200

在获取和使用卷名方面存在一些问题,但在我了解这些问题之前:您为什么需要它?我还没有使用过,但我的理解是startosinstall默认安装到当前启动卷上,所以你可以关闭--volume选项:

./startosinstall --agreetolicense --rebootdelay 200

现在,如果您确实需要启动卷名称,以下是需要修复的内容:

  • 要在变量中捕获命令的输出,需要使用var=$(command)。您缺少$( ),并且=之后(或之前(不能有空格。(顺便说一句,有一个版本使用反引号而不是$( ),但它在一些方面更混乱,所以不要使用它。(

  • 命令diskutil info / | grep "Volume Name:" | awk '{print $3}'将打印启动卷名称的第一个单词。例如,如果卷名为"Macintosh HD",则diskutil | grep部分的输出为"Volume Name: Macintosh HD",awk将打印其中的第三个字,即"Macintosh"。解决这个问题更为混乱;我想到的最简单的方法是使用sed而不是grepawk:

    Boot=$(diskutil info / | sed -n 's/^   Volume Name:              //p')
    
  • 最后,当您使用Boot变量时,您需要在它周围加上双引号,以防止它被拆分为多个"单词":

    echo "$Boot"
    ./startosinstall --volume "/Volumes/$Boot" --agreetolicense --rebootdelay 200
    

BTW,shellcheck.net擅长捕捉常见错误;我强烈建议您通过它运行脚本。

我管理过很多Mac,有一个苹果工具叫"服务器"[https://www.apple.com/macos/server/],其中包含创建图像的工具和可以在安装时自定义这些图像的服务器。虽然要实现mac的自动化安装还有一段学习曲线,但苹果要求的成本(29美元(是很难击败的。

它还做了很多其他事情,但如果你想自动化这些事情,那么仅仅拥有安装服务器是非常值得的。我曾经在不同的物理位置安装了2台服务器,可以在任何地方(重新(安装任何mac。

最新更新