Здесь есть две связанные концепции: C статус выхода и код возврата bash. Они оба охватывают диапазон 0-255, но bash использует цифры выше 126 для своих целей, поэтому было бы странно возвращать их из вашей программы.
Чтобы быть безопасным, коды статуса выхода на выход до 0-127, как это наиболее переносимо, по крайней мере, это подразумевается http://docs.python.org/library/sys.html#sys.exit.
Статус выхода C вставляется в bash $? переменная после выполнения, но bash использует 127, чтобы указать «команда не найдена», поэтому вы можете этого избежать. Bash reference page.
Bash также использует сигналы 128-255 для сигналов - они показывают, что процесс был убит с помощью сигнала: exit code = 128 + signal number
. Таким образом, вы можете уйти с использованием чисел, близких к 255, так как маловероятно, что номера сигналов будут такими высокими.
Помимо этих общих направляющих есть много попыток определить, что должны означать разные цифры: http://tldp.org/LDP/abs/html/exitcodes.html.
Итак, вы хотите вернуть произвольное целое из вашей программы, вероятно, лучше всего напечатать его на stdout и захватить его с помощью VALUE=$(program)
из вашего сценария bash.
Я получаю ** 232 ** для 'return 1000;' и ** 233 ** для 'return 1001;' – Lazer
** 1000% 256 = 232 ** – Lazer