Is there an equivalent of $! in ksh, which provides the error string ? $? stores the exit code only.
Unfortunately no. Generally in shell scripting, you can only get back information that the program passes to the environment, which on most unix systems is just the return code. Generally to find out what an error return value means, you will need to look in the manual page for the program which returned an error.
For example, the
grep program will return a value of 1 if no lines are found to match, and a value of 0 (generally used for success) if there were lines found matching. A return value of 2 is used for an error. This is documented in the grep manpage
In many cases, the error will be printed on STDERR as well.