pub enum BashExpr {
Show 25 variants
Var(BashVar),
Lit(String),
DQuoted(String),
CmdSubst(String),
ArithExpr(String),
ProcSubst {
is_input: bool,
cmd: String,
},
ArrayElem(String, Box<BashExpr>),
ArrayLen(String),
ArrayAll(String),
AssocElem(String, Box<BashExpr>),
Default(String, Box<BashExpr>),
AssignDefault(String, Box<BashExpr>),
Substring(String, usize, Option<usize>),
StringLen(String),
StripPrefix(String, String),
StripSuffix(String, String),
UpperCase(String),
LowerCase(String),
LastStatus,
ShellPid,
ScriptName,
Positional(usize),
AllArgs,
ArgCount,
Concat(Box<BashExpr>, Box<BashExpr>),
}Expand description
Bash expression / expansion node.
Variants§
Var(BashVar)
Variable expansion: ${name} or $name
Lit(String)
String literal (single-quoted, no expansion): 'hello'
DQuoted(String)
Double-quoted string (allows expansions): "hello $world"
CmdSubst(String)
Command substitution: $(cmd)
ArithExpr(String)
Arithmetic expansion: $(( expr ))
ProcSubst
Process substitution: <(cmd) or >(cmd)
ArrayElem(String, Box<BashExpr>)
Array element: ${arr[idx]}
ArrayLen(String)
Array length: ${#arr[@]}
ArrayAll(String)
All array elements: "${arr[@]}"
AssocElem(String, Box<BashExpr>)
Associative array element: ${map[$key]}
Default(String, Box<BashExpr>)
Parameter expansion with default: ${var:-default}
AssignDefault(String, Box<BashExpr>)
Parameter expansion with assign default: ${var:=default}
Substring(String, usize, Option<usize>)
Substring: ${var:offset:length}
StringLen(String)
String length: ${#var}
StripPrefix(String, String)
Pattern removal (prefix): ${var#pattern}
StripSuffix(String, String)
Pattern removal (suffix): ${var%pattern}
UpperCase(String)
Case conversion (Bash 4+): ${var^^} / ${var,,}
LowerCase(String)
LastStatus
Exit code of last command: $?
ShellPid
PID of current shell: $$
ScriptName
Script name: $0
Positional(usize)
Positional argument: $N
AllArgs
All positional arguments: "$@"
ArgCount
Number of positional arguments: $#
Concat(Box<BashExpr>, Box<BashExpr>)
Concatenation of two expressions