tar -czf backup.tgz "$exclude1" "$exclude2" ${exclude3+"$exclude3"} 2>&1
${exclude3+"$exclude3"}
se expande para nada, se $exclude3
não estiver definido e para "$exclude3"
, se estiver definido.
(e semelhantemente para as outras variáveis potencialmente não definidas).
Note que existe uma diferença entre uma variável não definida e uma variável que é definida para a string vazia, então você deve usar
unset exclude3
em vez de
exclude3=''