The Bash and Korn shells provide the following features:
Input/output redirection
Wildcard characters (metacharacters) for filename abbreviation
Shell variables and options for customizing your environment
A built-in command set for writing shell programs
Shell functions, for modularizing tasks within a shell program
Job control
Command-line editing (using the command syntax of either vi or Emacs)
Access to previous commands (command history)
Integer arithmetic
Arrays and arithmetic expressions
Command-name abbreviation (aliasing)
ksh93 and Bash (but not ksh88) have the following capabilities:
Upwards compliance with POSIX
Internationalization facilities
An arithmetic for loop
More ways to substitute variables
ksh93 adds the following capabilities:
Floating-point arithmetic and built-in arithmetic functions
Structured variable names and indirect variable references
Associative arrays
More ways to match patterns