&&
é um "e" lógico; essencialmente, ele permite fazer algo com base no fato do comando anterior ter sido concluído com êxito (embora isso possa não ser verdade em casos mais complexos, por exemplo, considere true || false && echo true
, aqui está um artigo sobre regras de lógica booleana . Outra maneira de escrever a declaração em sua pergunta seria:
if test ".$TOMCAT_USER" = .; then
TOMCAT_USER=tomcat
fi
Esta é uma maneira estranha de testar uma variável não definida / nula, no entanto. O POSIX já tem várias maneiras de fazer isso:
: "${TOMCAT_USER:=tomcat}" # Assign as part of the expansion,
# ':' is a noop to avoid running the expansion.
TOMCAT_USER="${TOMCAT_USER:-tomcat}" # Expand, and then assign
A diferença entre as versões :=
/ :-
e :
-less é que as versões :
também testam se a variável é nula, além de testar se não está definida (o que está mais próximo do original teste).