Skip to content

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=Toronto
echo ${var%o*}
Toront
${var%%PATTERN} Remove Longest match from the End var=Toronto
echo ${var%%o*}
T
${var#PATTERN} Remove Shortest match from the Beginning var=Toronto
echo ${var#*o}
ronto
${var##PATTERN} Remove Longest match from the Beginning var=Toronto
echo ${var##*t}
o
${var//PATTERN/STRING} Replace all instances of PATTERN with STRING password=abc123
printf "%s\n" "${password//?/*}"
******
${var:OFFSET:LENGTH} Return a Substring of $var.
First character is at offset 0.
var=Toronto
echo ${var:2:3}
ron
${var^PATTERN} Convert First character to Uppercase if it matches PATTERN. If PATTERN is omitted, any character is matched. var=toronto
echo ${var^}
Toronto
${var^^PATTERN} Convert All characters to Uppercase if it matches PATTERN. If PATTERN is omitted, any character is matched. var=toronto
echo ${var^^}
echo ${var^^[nr]}
TORONTO
toRoNto
${var,PATTERN}
${var,,PATTERN}
Does for Lowercase what ${var^PATTERN} and ${var^^PATTERN} does for Uppercase. var=TORONTO
echo ${var,}
echo ${var,,[T]}
tORONTO
tORONtO
${var~PATTERN}
${var~~PATTERN}
Does case inversion var=Toronto
echo ${var~~}
tORONTO

$RANDOM

$RANDOM returns a different number between 0 and 32,767 each time it is referenced