10.3. Arithmetic
There is not really a need to do math problems in a shell script, but sometimes arithmetic is necessary, for instance, to increment or decrement a loop counter. The C shell supports integer arithmetic only. The @ symbol is used to assign the results of calculations to numeric variables.
10.3.1 Arithmetic Operators
The following operators shown in Table 10.1 are used to perform integer arithmetic operations. They are the same operators as found in the C programming language. See Table 10.6 on page 538 for operator precedence. Also borrowed from the C language are shortcut assignment operators, shown in Table 10.2.
Example 10.5.
1 % @ sum = 4 + 6
echo $sum
10
2 % @ sum++
echo $sum
11
3 % @ sum += 3
echo $sum
14
4 % @ sum--
echo $sum
13
5 % @ n = 3+4
@: Badly formed number
Table 10.1. Integer Arithmetic OperatorsOperator | Function |
---|
+ | Addition | – | Subtraction | / | Division | * | Multiplication | % | Modulus | << | Left shift | >> | Right shift |
Table 10.6. Operator PrecedenceOperator | Precedence | Meaning |
---|
( ) | High
Low |
Change precedence; group | ~ | Complement | ! | Logical NOT, negation | * / % | Multiply, divide, modulo | + – | Add, subtract | << >> | Bitwise left and right shift | > >= < <= | Relational operators: greater than, less than | == != | Equality: equal to, not equal to | =~ !~ | Pattern matching: matches, does not match | & | Bitwise AND | ^ | Bitwise exclusive OR | | | Bitwise inclusive OR | && | Logical AND | || | Logical OR |
Table 10.2. Shortcut OperatorsOperator | Example | Equivalent To |
---|
+= | @ num += 2 | @ num = $num + 2 | –= | @ num –= 4 | @ num = $num – 4 | *= | @ num *= 3 | @ num = $num * 3 | /= | @ num /= 2 | @ num = $num / 2 | ++ | @ num++ | @ num = $num + 1 | –– | @ num–– | @ num = $num – 1 |
EXPLANATION
The variable sum is assigned the result of adding 4 and 6. (The space after the @ is required.) The variable sum is incremented by 1. The variable sum is incremented by 3. The variable sum is decremented by 1.
|