from: wiki
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}