The ‘$’ character introduces parameter expansion, command substitution, or arithmetic expansion.
#Set var2 = $var1 or "defaultval" if $var1 not set or is null
var2=${var1:-"defaultval"}
#Set var1 = "defaultvalue" if $var1 not set or is null
: ${var1:="defaultvalue"}
#if unset or null var1 prints to stderror var1 is undefined"
: ${var1:?" is undefined"}
#if is set var1 prints to stderror var1 is defined"
echo ${var1:+"is defined"}| Code | Description |
|---|---|
| ${#parameter} | calculate the length |
| ${parameter:offset:length} | Returns the portion of string specified by the offset and length parameters. |
| ${parameter#word} | Remove prefix |
| ${parameter##word} | Remove the longest matching pattern prefix |
| ${parameter%word} | Remove suffix |
| ${parameter%%word} | Remove the longest matching pattern suffix |
| ${parameter/pattern/string} | Replace first match |
| ${parameter//pattern/string} | Replace all match |
| ${parameter^pattern} | Converts lowercase letters matching pattern to uppercase |
| ${parameter^^pattern} | Converts lowercase letters all matching pattern to uppercase |
| ${parameter,pattern} | Converts matching uppercase letters to lowercase |
| ${parameter,,pattern} | Converts all matching uppercase letters to lowercase |