A maneira mais limpa provavelmente seria usar uma matriz para manter o (s) parâmetro (s) opcional (is):
params=()
if [[ $CONDITION == true ]]; then
params+=(--param2)
fi
script param1 "${params[@]}"
Ou na forma abreviada:
[[ $CONDITION == true ]] && params+=(--param2)
script param1 "${params[@]}"
Isso evita a repetição da parte constante do comando.
Observe que é importante fazer isso com uma matriz: se você substituir a matriz por uma variável regular ( params="--param2"; script param1 $params
), terá que expandir a variável sem aspas, com todos os problemas que a traz ou expandi-la. , nesse caso, você passará uma string vazia como argumento se a variável estiver vazia.