goto <label>
:loop echo Hello world goto loop
goto host_${hostname} || goto unknown
Jump to a script label. This command can be used only within an iPXE script.
Failure | The label does not exist |
---|
It is logically impossible for this command to return successfully.
If you are using goto
to jump to a label when an operation succeeds, then you must also consider what would happen if the operation were to fail. For example:
dhcp && goto dhcp_ok
If the dhcp
command fails, then the script will immediately terminate, as described in the scripting guide. To avoid this problem, you can use the ||
operator:
dhcp && goto dhcp_ok ||
As with all iPXE commands, any settings such as ${hostname} will be expanded. It is therefore possible to use a dynamically-generated label as the target for the goto
command. For example, if the hostname provided by DHCP is thinclient1
, then the command
goto host_${hostname}
would jump to the label host_thinclient1
.
When using dynamically-generated labels, it is generally a good idea to include a fallback label in case the dynamically-generated label does not exist. For example:
#!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}
You can construct simple loops using the inc
and iseq
commands.