Почему пусть --n имеет код выхода, отличный от let n-- в bash? - PullRequest
3 голосов
/ 04 апреля 2011

Почему они имеют код выхода 1?

n=1
let --n

И почему код выхода равен 0?

n=1 
let n--

У этого тоже есть код выхода 1 ... почему?

n=1
let "n = n - 1"

Ответы [ 2 ]

4 голосов
/ 04 апреля 2011

человек Баш говорит:

let arg [arg ...]
          Each arg is an arithmetic expression to be evaluated (see ARITH‐
          METIC EVALUATION above).  If the last arg evaluates  to  0,  let
          returns 1; 0 is returned otherwise.

1 - 1 = 0, поэтому код выхода равен 1.

2 голосов
/ 04 апреля 2011

Разница между --n и n-- заключается в том, что первый член имеет значение n-1 (оно уменьшается сначала , а затем оценивается), а второй член имеет значение n (post декремент). После значения берется, n всегда на единицу меньше, но позиция -- говорит, когда значение должно быть скопировано в результат.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...