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.