15. Parameter expansion
15.1. Simple usage
$PARAMETER
${PARAMETER}
15.2. Indirection
${!PARAMETER}
15.3. Case modification
${PARAMETER^}
${PARAMETER^^}
${PARAMETER,}
${PARAMETER,,}
${PARAMETER~}
${PARAMETER~~}
15.4. Variable name expansion
${!PREFIX*}
${!PREFIX@}
15.5. Substring removal (also for filename manipulation!)
${PARAMETER#PATTERN}
${PARAMETER##PATTERN}
${PARAMETER%PATTERN}
${PARAMETER%%PATTERN}
15.6. Search and replace
${PARAMETER/PATTERN/STRING}
${PARAMETER//PATTERN/STRING}
${PARAMETER/PATTERN}
${PARAMETER//PATTERN}
15.7. String length
${#PARAMETER}
15.8. Substring expansion
${PARAMETER:OFFSET}
${PARAMETER:OFFSET:LENGTH}
15.9. Use a default value
${PARAMETER:-WORD}
${PARAMETER-WORD}
15.10. Assign a default value
${PARAMETER:=WORD}
${PARAMETER=WORD}
15.11. Use an alternate value
${PARAMETER:+WORD}
${PARAMETER+WORD}
15.12. Display error if null or unset
${PARAMETER:?WORD}
${PARAMETER?WORD}