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} |
Last active
April 24, 2025 14:47
-
Star
(221)
You must be signed in to star a gist -
Fork
(40)
You must be signed in to fork a gist
-
-
Save magnetikonline/90d6fe30fc247ef110a1 to your computer and use it in GitHub Desktop.
Bash string manipulation cheatsheet.
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
thanks @nightskyguy - I've actually been needing this for a script recently. Nicely timed. 👍