1. Temporary replacement if not set (:-)
Colon: Used to verify that the variable has been set, if there is no colon, it is assumed to have been set, not replaced
$fruit =peach
$echo ${fruit:-plum}
Peach
$fruit =
$echo ${fruit:-plum}
Plum
$echo $fruit
$
2, not set on permanent replacement (: =)
$name =
$echo ${name:=peter}
Peter
$echo $name
Peter
3, set the temporary replacement (: +)
$foo =grapes
$echo ${foo:+pears}
Pears
$echo $foo
Grapes
4. Print the message without setting it (:?)
$echo ${namex:? " Namex is undefined "}
Namex:namex is undefined
$echo name=${1:? " Requires an argument "}//For detecting positional parameters in scripts
1:requires an argument
echo ${y?}
Y:parameter null or not set//print default message
5. Substring (: m:n)
$var =notebook
$echo ${var:0}
Notebook
$echo ${var:0:4}
Note
$echo ${var:4:4}
Book
Bash variable extension modifier