Есть ли эквивалент $! в ksh, который предоставляет строку ошибки? $? хранит только код выхода.
2
К сожалению нет. Обычно в сценариях оболочки вы можете получить только ту информацию, которую программа передает в среду, которая в большинстве систем Unix является просто кодом возврата. Как правило, чтобы узнать, что означает возвращаемое значение ошибки, вам нужно поискать на странице руководства программу, которая вернула ошибку.
Например, grep
программа вернет значение 1, если не найдено ни одной строки, и значение 0 (обычно используется для успеха), если найденные строки совпадают. Возвращаемое значение 2 используется для ошибки. Это задокументировано на man-странице grep
Во многих случаях ошибка будет напечатана и на STDERR.