Chaque ARG est une expression arithmétique à évaluer. L'évaluation est faite avec des entiers de largeur fixe sans vérification de dépassement, mais la division par zéro est interceptée et signalée comme une erreur. La liste suivante d'opérateurs est groupée par niveau d'égale priorité. Les niveaux sont listés par priorité décroissante. id++, id-- post-incrément ou post-décrément de variable ++id, --id pré-incrément ou pré-décrément de variable -, + moins unaire, plus unaire !, ~ négations logique et binaire ** mise en exposant *, /, % multiplication, division, reste de la division +, - addition, soustraction <<, >> décalage binaire à gauche et à droite <=, >=, <, > comparaison ==, != égalité, inégalité & ET binaire ^ OU binaire exclusif | OU binaire && ET logique || OU logique expr ? expr : expr opérateur de condition =, *=, /=, %=, +=, -=, <<=, >>=, &=, ^=, |= affectation Les variables de shell sont autorisées comme opérandes. Le nom de la variable est remplacé par sa valeur (contrainte à un entier de largeur fixe) à l'intérieur d'une expression. La variable n'a pas besoin d'avoir son attribut d'entier activé pour être utilisée dans une expression. Les opérateurs sont évalués dans leur ordre de priorité. Les sous-expressions entre parenthèses sont évaluées en premier et peuvent être prioritaires sur les règles ci-dessus. Code de sortie : Si le dernier ARG est évalué à 0, « let » renvoie 1, sinon 0 est renvoyé.