跳转至

跳转到脚本标签

语法

  goto <label>

示例

无限打印 "hello world"

  :loop
  echo Hello world
  goto loop

跳转到计算出的标签

  goto host_${hostname} || goto unknown

描述

跳转到脚本标签。此命令只能在 iPXE 脚本中使用。

命令状态

失败 标签不存在

此命令在逻辑上不可能成功返回。

另请参阅

备注

如果你用 goto 在操作成功时跳转到某个标签,那么你还必须考虑操作失败时会发生什么。例如:

  dhcp && goto dhcp_ok

如果 dhcp 命令失败,脚本会立即终止,如脚本指南所述。要避免这个问题,可以使用 || 运算符:

  dhcp && goto dhcp_ok ||

与所有 iPXE 命令一样,任何设置(如 ${hostname})都会被展开。因此可以使用动态生成的标签作为 goto 命令的目标。例如,如果 DHCP 提供的主机名是 thinclient1,那么命令

  goto host_${hostname}

会跳转到标签 host_thinclient1

使用动态生成的标签时,通常最好包含一个回退标签,以防动态生成的标签不存在。例如:

 #!ipxe

 dhcp
 goto host_${hostname} || goto unknown

 :host_thinclient1
 sanboot iscsi:192.168.0.1::::iqn.2010-04.org.ipxe:winxp

 :host_thinclient2
 sanboot iscsi:192.168.0.1::::iqn.2010-04.org.ipxe:win7

 :unknown
 echo Unknown host ${hostname}

你可以使用 inciseq 命令构造简单的循环。