Usar um arquivo ou entrada padrão para configurar o crontab cria novamente (sobrescreve) o conteúdo em vez de anexá-lo ao que quer que já exista.
Uma solução fácil seria escrever cada uma das suas entradas em um único arquivo:
crontab -u root -l | grep -w "$VAR" | crontab -u root - && \
{ crontab -l -u root 2>/dev/null; echo "0 */2 * * * /root/$VAR/script > /dev/null 2>&1"; } \
>> cron-entry-file
Depois de coletar todas as entradas, faça isso apenas uma vez:
crontab -u root cron-entry-file
Se você estiver gerando suas entradas em scripts diferentes e / ou em momentos diferentes, cada vez que precisar fazer: crontab -l > cron-entry-file
para preservar as configurações atuais, siga as etapas acima. (Espero que alguém venha com uma solução mais graciosa, mas essa abordagem de força bruta deve funcionar.)
Editar
Como o seu cenário não é tão simples quanto pensei ao escrever originalmente, considere manipular diretamente o arquivo crontab. É apenas um arquivo normal (sob / var / cron / tabs / {username} por exemplo). Pode querer ler isto primeiro: link