let
, хотя сам не POSIX-совместим, может быть выражен в соответствии с POSIX как
[ "$(( <EXPRESSION> ))" -ne 0 ]
В отличие от простого присваивания, let
также оценивает присвоение (выражение) и возвращает код выхода в зависимости от результата:
$ aaa=1; echo $?
0
$ aaa=0; echo $?
0
$ let aaa=1; echo $?
0
$ let aaa=0; echo $?
1