A abordagem baseada em função resulta no código mais claro. Há pelo menos duas variantes possíveis, a sugerida por FloHe acima, no comentário (que não seria o meu caminho preferido):
function myprint
{
if type banner >/dev/null
then banner "$@"
else echo "$@"
fi
}
myprint "Hello World!"
ou - a variante que prefiro - para usar uma definição de função condicional :
if type banner >/dev/null
then function myprint { banner "$@" ;}
else function myprint { echo "$@" ;}
fi
myprint "Hello World!"
que não tem a sobrecarga de uma condição if
com cada chamada e que também não requer duplicação de expressões de string ou variável (como em outra sugestão).