Eu executei um script de shell cruzado com o BUILDDIR=${BUILDDIR:-"/data"}
qual, após a experimentação, pega o BUILDDIR original se ele existir e não for uma string vazia e, caso contrário, o define como /data. O que eu não entendo é como a expressão funciona - por que os operadores e e como eles funcionam :
.-
É um dos (felizmente apenas) um punhado de atalhos feitos como parte da expansão de parâmetros . Em suma, há o seguinte, vagamente definido:
${VAR:-value}
Use$VAR
se possível, senãovalue
${VAR:=value}
Use$VAR
se possível, senão defina$VAR
comovalue
e usevalue
${VAR:?value}
(sair se$VAR
for indefinido) e${VAR:+value}
(oposto de:-
) existem, mas nunca os vi na natureza.${VAR:offset}
e${VAR:offset:length}
pegue substrings de$VAR
.(Há também um monte de outros que removem prefixos ou sufixos ou fazem substituição geral; consulte a página de informações do bash vinculada acima para eles.)