Eles são conhecidos como expansão de parâmetro, que é a sintaxe avançada do script do Shell
-
${2:-/var/run/$base.pid}
é um exemplo de${VAR :-default }
Isso resultará em
$VAR
, a menos queVAR
seja indefinido ou nulo, caso em que resultará em padrão. Em determinado script, se${2}
não estiver definido, o valor padrão/var/run/$base.pid
será usado -
base=${1##*/}
é um exemplo de${var#Pattern}
Você pode remover
$var
conforme o padrão fornecido na frente de$var
sef=/etc/resolv.conf
,echo ${f#/etc/}
removerá/etc/
parte e obterá apenas um nome de arquivo
ATUALIZAÇÃO:
f=/etc/httpd/httpd.conf
# This will return etc/httpd/httpd.conf
echo ${f#*/}
# This will return httpd.conf
echo ${f##*/}
O único #
é não-ganancioso, enquanto o dobro # é a abordagem gananciosa da expressão correspondente.