Ответ 1
Здесь есть два взаимосвязанных понятия: C статус выхода и bash код возврата. Они оба охватывают диапазон 0-255, но bash использует числа выше 126 для своих собственных целей, поэтому было бы странно возвращать их из вашей программы.
Чтобы быть безопасным, коды статуса выхода на выход до 0-127, поскольку это наиболее переносимо, по крайней мере, это подразумевается http://docs.python.org/library/sys.html#sys.exit.
Статус выхода C помещается в bash $? переменная после выполнения, но bash использует 127 для указания "команда не найдена", поэтому вы можете этого избежать. Bash справочная страница.
Bash также использует 128-255 для сигналов - они указывают, что процесс был убит сигналом:
exit code = 128 + signal number
. Таким образом, вы можете уйти с использованием чисел, близких к 255, поскольку маловероятно, что номера сигналов будут такими высокими.
Помимо этих общих направляющих есть много попыток определить, что означают разные числа: http://tldp.org/LDP/abs/html/exitcodes.html.
Итак, вы хотите вернуть произвольное целое из вашей программы, лучше всего распечатать его на stdout и захватить с помощью VALUE=$(program)
из bash script.