Arithmetic expression for (( ... )) constructs.
Examples
# (( x = 5 ))
%Arithmetic{
operator: :assign,
operands: [
{:var, "x"},
{:literal, 5}
]
}
# (( x + 5 ))
%Arithmetic{
operator: :add,
operands: [
{:var, "x"},
{:literal, 5}
]
}
# (( x > 5 ))
%Arithmetic{
operator: :gt,
operands: [
{:var, "x"},
{:literal, 5}
]
}
# (( x++ ))
%Arithmetic{
operator: :post_increment,
operands: [{:var, "x"}]
}
# (( (x + y) * z ))
%Arithmetic{
operator: :mul,
operands: [
%Arithmetic{operator: :add, operands: [{:var, "x"}, {:var, "y"}]},
{:var, "z"}
]
}
Summary
Types
@type operator() ::
:assign
| :add_assign
| :sub_assign
| :mul_assign
| :div_assign
| :mod_assign
| :add
| :sub
| :mul
| :div
| :mod
| :pow
| :pre_increment
| :post_increment
| :pre_decrement
| :post_decrement
| :eq
| :ne
| :lt
| :le
| :gt
| :ge
| :and
| :or
| :not
| :bit_and
| :bit_or
| :bit_xor
| :bit_not
| :left_shift
| :right_shift
| :ternary
@type t() :: %Bash.AST.Arithmetic{ exit_code: 0..255 | nil, expression: term(), meta: Bash.AST.Meta.t(), operands: [operand()], operator: operator(), state_updates: map() }