2014-02-18 3 views
1

Я понимаю, что команда EXIT заставляет оболочку или программу завершить работу. Но в чем разница между ниже:Объяснение Различные команды EXIT в UNIX

exit 2 
exit 3 
exit 4 
exit $? 

, как это выход 2 отличается от выхода 3 и так далее

+0

@tripleee: на самом деле не является дубликатом, ОП просит о 'exit' не о возможности стандартного значения значений кодов возврата. – isedev

+0

@isedev: А? Это то, что вы используете 'exit' для. – tripleee

ответ

3

Это только код выхода. 0 - для прекрасного выхода, иначе это код ошибки. $? - это переменная оболочки, сохраняющая предыдущее значение выхода (так что программа, которая запускалась до вашего).

+0

Точнее, это параметр оболочки или оболочки. Это не переменная среды. – Barmar

+0

Правда, отредактировал его. – bagage

+0

'bash' выделяет переменные оболочки как параметр, обозначаемый именем. Это исключает позиционные параметры (обозначаемые ненулевыми числами) и специальные параметры (обозначаемые различными знаками препинания, символами и 0). – chepner

2

Команда exit принимает одно значение, которое является значением возвращаемого кода процесса (например, оболочки). $? - код возврата из последней команды, выполняемой оболочкой.

Например, сценарий, который выходит с кодом возврата, соответствующий первому аргументу:

#!/bin/sh 
exit $1 

даст вам:

# ./script 1 
# echo $? 
1 
# ./script 2 
# echo $? 
2 

Примечание в большинстве систем UNIX, код возврата ограничен на числовое значение от 0 до 255, при этом 0 указывает на успех и 1-255, предоставляя информацию об ошибках (специфичную для каждого процесса).

+0

О, я получил это благодаря большому количеству интеллекта –

1

От Advanced Bash-Scripting Guide, Глава 6: Выход и выход состояния:

Команда выхода завершает сценарий, так же, как в программе C. Он также может вернуть значение, доступное для родительского процесса скрипта.

Таким образом, команда exit позволяет назначить собственное значение выхода, которое вы могли бы описать на своей странице руководства, например.

$? вернет код выхода предыдущей команды. Например; Вы пишете скрипт, который выполняет cat example.txt, что приводит код выхода 1. Если вы выполните exit $?, ваш сценарий будет завершаться с тем же кодом, как cat example.txt

Смежные вопросы