Differences
This shows you the differences between two versions of the page.
| Both sides previous revision Previous revision Next revision | Previous revision | ||
|
soc:2009:lynusvaz:notes:scripting_doc:features_added [2009/08/07 10:34] lynusvaz |
soc:2009:lynusvaz:notes:scripting_doc:features_added [2009/08/16 00:19] (current) lynusvaz |
||
|---|---|---|---|
| Line 1: | Line 1: | ||
| - | The features mentioned here are NOT YET part of mainline gPXE, and are still under development. The modified code can be found in my git repository, in the [[http://git.etherboot.org/?p=people/lynusvaz/gpxe.git;a=shortlog;h=refs/heads/offset|offset]] branch. | + | =====Scripting Features===== |
| + | The features mentioned here are NOT YET part of mainline gPXE, and are still under development. The modified code can be found in my git repository, in the [[http://git.etherboot.org/?p=people/lynusvaz/gpxe.git;a=shortlog;h=refs/heads/expt|expt]] branch. | ||
| - | Scripting features: | ||
| - Identifiers | - Identifiers | ||
| - Arithmetic evaluator | - Arithmetic evaluator | ||
| Line 9: | Line 9: | ||
| - Loops | - Loops | ||
| - | 1. See the Identifiers section at: [[http://etherboot.org/wiki/commandline]], for the basic syntax of an identifier. The new code allows identifiers to be 'nested', like: | + | ====Identifiers==== |
| + | See the Identifiers section at: [[http://etherboot.org/wiki/commandline]], for the basic syntax of an identifier. The new code allows identifiers to be 'nested', like: | ||
| set i 0 | set i 0 | ||
| echo ${net${i}/ip} | echo ${net${i}/ip} | ||
| Line 18: | Line 19: | ||
| will print the IP address of the net1 interface (if it exists). | will print the IP address of the net1 interface (if it exists). | ||
| - | 2. Arithmetic expressions can be evaluated by placing them within $(). | + | ====Arithmetic Evaluation==== |
| - | The usual C operators (except assignment) are supported with their usual precendence. Operators, in order of decreasing precedence: | + | Arithmetic expressions can be evaluated by placing them within $(). |
| + | The following operators are supported (in order of decreasing precedence): | ||
| - !, ~ (logical NOT and bitwise negation) | - !, ~ (logical NOT and bitwise negation) | ||
| - *, /, % (multiplication, division, and modulo) | - *, /, % (multiplication, division, and modulo) | ||
| Line 41: | Line 43: | ||
| 50 | 50 | ||
| 1 | 1 | ||
| - | 3. Quoting: | + | |
| + | ====Quoting==== | ||
| The \ is used as an escape character. The following sequences are recognised: | The \ is used as an escape character. The following sequences are recognised: | ||
| * \<space> Treats the space as part of the command-line argument | * \<space> Treats the space as part of the command-line argument | ||
| Line 66: | Line 69: | ||
| Hello | Hello | ||
| World | World | ||
| + | Hello World | ||
| It's good to see you! | It's good to see you! | ||
| - | 4. Branches: | + | ====Branches==== |
| The keywords if, else and fi are used to branch command execution: | The keywords if, else and fi are used to branch command execution: | ||
| if <condition> | if <condition> | ||
| Line 105: | Line 109: | ||
| will attempt to boot using the given kernel and initrd. If any of the three commands fail, it displays a message. | will attempt to boot using the given kernel and initrd. If any of the three commands fail, it displays a message. | ||
| - | 4. The return code of the previous statement can be checked using the ${rc} variable. | + | ====Return Code==== |
| + | The return code of the previous statement can be checked using the ${rc} variable. | ||
| A value of 0 means that the command completed successfully, while any other value means the command was not successful. | A value of 0 means that the command completed successfully, while any other value means the command was not successful. | ||
| Line 116: | Line 121: | ||
| fi | fi | ||
| - | 6. While and for loops have been added: | + | ====Loops==== |
| + | You can use while and for loops as: | ||
| while <condition> | while <condition> | ||
| do | do | ||
| Line 146: | Line 152: | ||
| done | done | ||
| displays: | displays: | ||
| - | 0 | + | i = 0 |
| - | 1 | + | i = 1 |
| - | 2 | + | i = 2 |
| - | 3 | + | i = 3 |
| - | 5 | + | i = 5 |
| - | 18 | + | i = 18 |
| + | A break statement will exit a loop, and a continue statement will start the next iteration of the loop. | ||
| + | for i in 1 2 3 4 5 6 | ||
| + | do | ||
| + | if $(${i} == 3) | ||
| + | continue | ||
| + | fi | ||
| + | echo 'i =' ${i} | ||
| + | if $(${i} == 4) | ||
| + | break #This will exit the for loop, not just the if branch | ||
| + | fi | ||
| + | done | ||
| + | displays: | ||
| + | i = 1 | ||
| + | i = 2 | ||
| + | i = 4 | ||