Anything.<p>There are bash libraries to do OO programming. Obviously, you can do text and screen based UI, but with things like tcl/tk and canvas, you can also do some GUI programming. bash has the virtual devices /dev/tcp and /dev/udp to do network programming in it (there are smtp, http pop3 imap3 and others protocols implemented in bash). There are shell and bash compilers to generate native code executables from bash sources.<p>So you can write any kind of application in bash.<p>Some big programs have started as shell programs.<p>But then, the question is why? For soon, very soon, you reach the limits of bash, with the lack of advanced data structures, the difficulty to write algorithms in it, the awkward syntax, the quotation hell, the lack of good debuggers, and so on.<p>When you could have the same interactive and script-like kind of development with other programming languages, like Common Lisp (or Smalltalk, scheme, or even ruby and python), and with better ways to interface with libraries and GUI frameworks, and more delivery choices.<p>Any programming language having implementations providing an interactive REPL and a decent debugger will provide you with a better programming experience than bash.