Skip to content

Instantly share code, notes, and snippets.

@thikade
Last active September 30, 2019 05:47
Show Gist options
  • Save thikade/424846beafe15bd375939b7e21fb63b4 to your computer and use it in GitHub Desktop.
Save thikade/424846beafe15bd375939b7e21fb63b4 to your computer and use it in GitHub Desktop.
bash parameter expansion

http://wiki.bash-hackers.org/syntax/pe

Simple usage

$PARAMETER
${PARAMETER}

Indirection

${!PARAMETER}

Case modification

${PARAMETER^}
${PARAMETER^^}
${PARAMETER,}
${PARAMETER,,}
${PARAMETER~}
${PARAMETER~~}

Variable name expansion

${!PREFIX*}
${!PREFIX@}

Substring removal (also for filename manipulation!)

${PARAMETER#PATTERN}
${PARAMETER##PATTERN}
${PARAMETER%PATTERN}
${PARAMETER%%PATTERN}

Search and replace

${PARAMETER/PATTERN/STRING}
${PARAMETER//PATTERN/STRING}
${PARAMETER/PATTERN}
${PARAMETER//PATTERN}

String length

${#PARAMETER}

Substring expansion

${PARAMETER:OFFSET}
${PARAMETER:OFFSET:LENGTH}

Use a default value

${PARAMETER:-WORD}
${PARAMETER-WORD}

Assign a default value

${PARAMETER:=WORD}
${PARAMETER=WORD}

Use an alternate value

${PARAMETER:+WORD}
${PARAMETER+WORD}

Display error if null or unset

${PARAMETER:?WORD}
${PARAMETER?WORD}

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