#[non_exhaustive]pub enum Subst<'a> {
Show 25 variants
Cmd(Vec<Cmd<'a>>),
Arith(Option<Arith<'a>>),
Len(Param<'a>),
Indirect(&'a str),
PrefixList(&'a str),
Transform(&'a str, u8),
Default(Param<'a>, Option<Word<'a>>),
Assign(Param<'a>, Option<Word<'a>>),
Error(Param<'a>, Option<Word<'a>>),
Alt(Param<'a>, Option<Word<'a>>),
TrimSuffixSmall(Param<'a>, Option<Word<'a>>),
TrimSuffixLarge(Param<'a>, Option<Word<'a>>),
TrimPrefixSmall(Param<'a>, Option<Word<'a>>),
TrimPrefixLarge(Param<'a>, Option<Word<'a>>),
Replace(Param<'a>, Option<Word<'a>>, Option<Word<'a>>),
ReplaceAll(Param<'a>, Option<Word<'a>>, Option<Word<'a>>),
ReplacePrefix(Param<'a>, Option<Word<'a>>, Option<Word<'a>>),
ReplaceSuffix(Param<'a>, Option<Word<'a>>, Option<Word<'a>>),
Substring(Param<'a>, &'a str, Option<&'a str>),
Upper(bool, Param<'a>),
Lower(bool, Param<'a>),
ArrayElement(&'a str, Word<'a>),
ArrayAll(&'a str),
ArrayLen(&'a str),
ArraySlice(&'a str, &'a str, Option<&'a str>),
}Expand description
A substitution or parameter expansion.
Variants (Non-exhaustive)§
This enum is marked as non-exhaustive
Cmd(Vec<Cmd<'a>>)
Command substitution: $(cmd) or `cmd`.
Arith(Option<Arith<'a>>)
Arithmetic expansion: $((expr)).
Len(Param<'a>)
String length: ${#var}.
Indirect(&'a str)
${!var} — indirect variable expansion.
PrefixList(&'a str)
${!prefix*} / ${!prefix@} — list variables matching prefix.
Transform(&'a str, u8)
${var@Q} — parameter transformation (quoting).
Default(Param<'a>, Option<Word<'a>>)
${var:-word} / ${var-word} — default value.
Assign(Param<'a>, Option<Word<'a>>)
${var:=word} / ${var=word} — assign default.
Error(Param<'a>, Option<Word<'a>>)
${var:?word} / ${var?word} — error if unset.
Alt(Param<'a>, Option<Word<'a>>)
${var:+word} / ${var+word} — alternate value.
TrimSuffixSmall(Param<'a>, Option<Word<'a>>)
${var%pattern} — remove shortest suffix match.
TrimSuffixLarge(Param<'a>, Option<Word<'a>>)
${var%%pattern} — remove longest suffix match.
TrimPrefixSmall(Param<'a>, Option<Word<'a>>)
${var#pattern} — remove shortest prefix match.
TrimPrefixLarge(Param<'a>, Option<Word<'a>>)
${var##pattern} — remove longest prefix match.
Replace(Param<'a>, Option<Word<'a>>, Option<Word<'a>>)
${var/pattern/replacement} — replace first match.
ReplaceAll(Param<'a>, Option<Word<'a>>, Option<Word<'a>>)
${var//pattern/replacement} — replace all matches.
ReplacePrefix(Param<'a>, Option<Word<'a>>, Option<Word<'a>>)
${var/#pattern/replacement} — replace prefix match.
ReplaceSuffix(Param<'a>, Option<Word<'a>>, Option<Word<'a>>)
${var/%pattern/replacement} — replace suffix match.
Substring(Param<'a>, &'a str, Option<&'a str>)
${var:offset:length} — substring extraction.
Upper(bool, Param<'a>)
${var^} / ${var^^} — uppercase (bool: all if true).
Lower(bool, Param<'a>)
${var,} / ${var,,} — lowercase (bool: all if true).
ArrayElement(&'a str, Word<'a>)
${arr[index]} — array element access (index is a Word for $((expr)) support).
ArrayAll(&'a str)
${arr[@]} or ${arr[*]} — all array elements.
ArrayLen(&'a str)
${#arr[@]} — array length.
ArraySlice(&'a str, &'a str, Option<&'a str>)
${arr[@]:offset:length} — array slice.