https://gist.github.com/magnetikonline/90d6fe30fc247ef110a1
| Assignment | |
| :--- | :--- |
| Assign value
to variable
if variable
is not already set, value
is returned. Combine with a :
no-op to discard/ignore return value
. | ${variable="value"}
: ${variable="value"}
|
| Removal | |
| Delete shortest match of needle
from front of haystack
. | ${haystack#needle}
|
| Delete longest match of needle
from front of haystack
. | ${haystack##needle}
|
| Delete shortest match of needle
from back of haystack
. | ${haystack%needle}
|
| Delete longest match of needle
from back of haystack
. | ${haystack%%needle}
|
| Replacement | |
| Replace first match of needle
with replacement
from haystack
. | ${haystack/needle/replacement}
|
| Replace all matches of needle
with replacement
from haystack
. | ${haystack//needle/replacement}
|
| If needle
matches front of haystack
replace with replacement
. | ${haystack/#needle/replacement}
|
| If needle
matches back of haystack
replace with replacement
. | ${haystack/%needle/replacement}
|
| Substitution | |
| If variable
not set, return value
, else variable
. | ${variable-value}
|
| If variable
not set or empty, return value
, else variable
. | ${variable:-value}
|
| If variable
set, return value
, else null string. | ${variable+value}
|
| If variable
set and not empty, return value
, else null string. | ${variable:+value}
|
| Extraction | |
| Extract length
characters from variable
starting at position
. | ${variable:position:length}
|
| Return string length of variable
. | ${#variable}
|
| Escaping | |
| Single quotes inside a single quoted string. | echo 'Don'\''t break my escape!'
|
| Indirection | |
| Return value of variable name held in indirect
, else value
. | indirect="apple"
apple="fruit"
${!indirect-value}
|