ИМХО, в баше очень сильно не хватает полиморфизма. Вот, к примеру, чтобы обработать строку и файл, мы должны применять разный синтаксис
echo the_string | program foo
program foo theFile
the_srting program(foo)
the_file program(foo)
Тут еще спасает то, что типов раз два и обчелся. А если бы их было много, мы бы вешались с этим не-ООП.
Вот такая печальная правда :(