Eu costumo usar algo assim, que considero bem legível:
[ -z $VAR ] && {
echo "Error msg"
exit ${LINENO}
} >&2
Para :
, a única coisa que posso imaginar é que você de alguma forma definiu uma função, mas não tenho ideia de como isso se traduziria em um bloco que permite a execução de vários comandos.
Em man bash
:
: [arguments]
No effect; the command does nothing beyond expanding arguments and
performing any specified redirections. A zero exit code is returned.
Portanto, a única possibilidade que vejo é se você tivesse redefinido :
para outra coisa. Eu estarei interessado em ver quaisquer possibilidades sobre o que poderia ser.