Variables
Parameter Expansion
| Pattern | What it does | Example | Results |
|---|---|---|---|
${var:-default} |
Use default value | ${var:-123} |
$var gets 123 if it is unset or empty |
${#var} |
Length of variable's contents | ||
${var%PATTERN} |
Remove Shortest match from the End | var=Torontoecho ${var%o*} |
Toront |
${var%%PATTERN} |
Remove Longest match from the End | var=Torontoecho ${var%%o*} |
T |
${var#PATTERN} |
Remove Shortest match from the Beginning | var=Torontoecho ${var#*o} |
ronto |
${var##PATTERN} |
Remove Longest match from the Beginning | var=Torontoecho ${var##*t} |
o |
${var//PATTERN/STRING} |
Replace all instances of PATTERN with STRING | password=abc123printf "%s\n" "${password//?/*}" |
****** |
${var:OFFSET:LENGTH} |
Return a Substring of $var.First character is at offset 0. |
var=Torontoecho ${var:2:3} |
ron |
${var^PATTERN} |
Convert First character to Uppercase if it matches PATTERN. If PATTERN is omitted, any character is matched. | var=torontoecho ${var^} |
Toronto |
${var^^PATTERN} |
Convert All characters to Uppercase if it matches PATTERN. If PATTERN is omitted, any character is matched. | var=torontoecho ${var^^}echo ${var^^[nr]} |
TORONTOtoRoNto |
${var,PATTERN}${var,,PATTERN} |
Does for Lowercase what ${var^PATTERN} and ${var^^PATTERN} does for Uppercase. |
var=TORONTOecho ${var,}echo ${var,,[T]} |
tORONTOtORONtO |
${var~PATTERN}${var~~PATTERN} |
Does case inversion | var=Torontoecho ${var~~} |
tORONTO |
$RANDOM
$RANDOM returns a different number between 0 and 32,767 each time it is referenced