| .. SPDX-License-Identifier: GPL-2.0+ |
| |
| .. index:: |
| single: setexpr (command) |
| |
| setexpr command |
| =============== |
| |
| Synopsis |
| -------- |
| |
| :: |
| |
| setexpr[.b, .w, .l .s] <name> [*]<value> <op> [*]<value2> |
| setexpr[.b, .w, .l] <name> [*]<value> |
| setexpr <name> fmt <format> [value]... |
| setexpr <name> gsub r s [t] |
| setexpr <name> sub r s [t] |
| |
| Description |
| ----------- |
| |
| The setexpr command is used to set an environment variable to the result |
| of an evaluation. |
| |
| setexpr[.b, .w, .l .s] <name> [*]<value> <op> [*]<value2> |
| Set environment variable <name> to the result of the evaluated |
| expression specified by <op>. |
| |
| setexpr[.b, .w, .l] name [*]value |
| Load <value> into environment variable <name> |
| |
| setexpr name fmt <format> value |
| Set environment variable <name> to the result of the C like |
| format string <format> evaluation of <value>. |
| |
| setexpr name gsub <r> <s> [<t>] |
| For each substring matching the regular expression <r> in the |
| string <t>, substitute the string <s>. |
| The result is assigned to <name>. |
| If <t> is not supplied, use the old value of <name>. |
| If no substring matching <r> is found in <t>, assign <t> to <name>. |
| |
| setexpr name sub <r> <s> [<t>] |
| Just like gsub(), but replace only the first matching substring |
| |
| The setexpr command takes the following arguments: |
| |
| format |
| This parameter contains a C or Bash like format string. |
| The number of arguments is limited to 4. |
| The following format types are supported: |
| |
| c |
| single character |
| d, i |
| decimal value |
| o |
| octal value |
| s |
| string |
| u |
| unsigned decimal value |
| x, X |
| hexadecimal value |
| '%' |
| no conversion, instead a % character will be written |
| |
| Backslash escapes: |
| |
| \" = double quote |
| \\ = backslash |
| \a = alert (bell) |
| \b = backspace |
| \c = produce no further output |
| \f = form feed |
| \n = new line |
| \r = carriage return |
| \t = horizontal tab |
| \v = vertical tab |
| \NNN = octal number (NNN is 0 to 3 digits) |
| |
| name |
| The name of the environment variable to be set |
| |
| op |
| '|' |
| name = value | value2 |
| '&' |
| name = value & value2 |
| '+' |
| name = value + value2 |
| (This is the only operator supported for strings. |
| It acts as concatenation operator on strings) |
| '^' |
| name = value ^ value2 |
| '-' |
| name = value - value2 |
| '*' |
| name = value * value2 |
| '/' |
| name = value / value2 |
| '%' |
| name = value % value2 |
| |
| r |
| Regular expression |
| |
| s |
| Substitution string |
| |
| t |
| string |
| |
| value |
| Can either be an integer value, a string. |
| If the pointer prefix '*' is given value is treated as memory address. |
| |
| value2 |
| See value |
| |
| Example |
| ------- |
| |
| :: |
| |
| => setexpr foo fmt %d 0x100 |
| => echo $foo |
| 256 |
| => |
| |
| => setexpr foo fmt 0x%08x 63 |
| => echo $foo |
| 0x00000063 |
| => |
| |
| => setexpr foo fmt %%%o 8 |
| => echo $foo |
| %10 |
| => |
| |
| Configuration |
| ------------- |
| |
| * The *setexpr* command is only available if CMD_SETEXPR=y. |
| * The *setexpr fmt* sub-command is only available if CMD_SETEXPR_FMT=y. |
| * The *setexpr gsub* and *setexpr sub* sub-commands are only available if |
| CONFIG_REGEX=y. |
| |
| Return value |
| ------------ |
| |
| The return value $? is set to 0 (true) if the operation was successful. |
| |
| If an error occurs, the return value $? is set to 1 (false). |