2014-10-19 1 views
1

Я делаю это в CSHWeird C-оболочки код возврата для оценки 1-1

set it = `expr 1 - 1` 
echo $? 

Он устанавливает it 0, но возвращается код ошибки 1. Почему код ошибки не 0, если выражение правильно оценивалось, и ответ был установлен правильно?

С другой стороны, если бы я имел

set it = `expr 2 - 1` 
echo $? 

то код ошибки 0. В чем проблема с оценкой 1-1?

ответ

1

Потому что expr странно. То же самое происходит с любым выражением, которое равно нулю.

Цитируя man page: Статус Выход

равно 0, если ВЫРАЖЕНИЕ не пустое и не 0, 1, если ЭКСПРЕССИЯ равно нулю или 0, 2, если ЭКСПРЕССИЯ синтаксически неверен, и произошло 3, если об ошибке.

Предпочтительная арифметика Shell.

@ it = 1 - 1 
echo $? : $it 
0 : 0