Skip to content

Instantly share code, notes, and snippets.

@ApolloTang
Forked from magnetikonline/README.md
Last active August 22, 2024 04:10
Show Gist options
  • Save ApolloTang/dd79b6ca6357e526c26518b65245cb42 to your computer and use it in GitHub Desktop.
Save ApolloTang/dd79b6ca6357e526c26518b65245cb42 to your computer and use it in GitHub Desktop.
Bash string manipulation cheatsheet.

Bash string manipulation cheatsheet

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}

Reference

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment