O problema não tem nada a ver com nc ou netcat ou qualquer um deles. Você está executando dois comandos aqui, nc e grep , mas apenas redirecionando a saída de grep . O que você quer fazer é:
nc -zv 1.2.3.4 55 &>/dev/null
Isso, é claro, seria inútil, pois, se não houver saída, você não poderá grep . É para isso que o -q flag do grep é:
-q, --quiet, --silent
Quiet; do not write anything to standard output. Exit
immediately with zero status if any match is found, even if an
error was detected. Also see the -s or --no-messages option.
Então, o que você procura é algo assim:
nc -zv 1.2.3.4 55 2>/dev/null | grep -q " open " && start_daemon
Ou, se você precisar analisar stderr também, isso:
nc -zv 1.2.3.4 55 |& grep -q " open " && start_daemon