数值类型
数值类型
我们可以使用如下方式创建数值类型变量:
declare -i y=10
echo $y
#!/bin/bash
# set x,y and z to an integer data type
declare -i x=10
declare -i y=10
declare -i z=0
z=$(( x + y ))
echo "$x + $y = $z"
# try setting to character 'a'
x=a
z=$(( x + y ))
echo "$x + $y = $z"
数学计算
您可以对 Bash Shell 变量执行数学运算。bash shell 具有内置的算术选项。您还可以使用外部命令,例如 expr 和 bc 计算器。通过使用以下格式放置整数表达式来完成算术扩展和求值:
$((expression))
$(( n1+n2 ))
$(( n1/n2 ))
$(( n1-n2 ))
((count++)) # increment value of variable 'count' by one.
((total+=current)) # set total = total+current.
((current>max?max=current:max=max)) # ternary expression.
使用 x 和 y 变量加两个数字。使用文本编辑器创建一个名为 add.sh 的 Shell 程序:
#!/bin/bash
x=5
y=10
ans=$(( x + y ))
echo "$x + $y = $ans"
带整数的数学运算符如下表所示:
| Operator | Description | Example | Evaluates To | 
|---|---|---|---|
| + | Addition | echo $(( 20 + 5 )) | 25 | 
| - | Subtraction | echo $(( 20 - 5 )) | 15 | 
| / | Division | echo $(( 20 / 5 )) | 4 | 
| * | Multiplication | echo $(( 20 *5 )) | 100 | 
| % | Modulus | echo $(( 20 % 3 )) | 2 | 
| ++ | post-increment (add variable value by 1) | x=5 echo $(( x++ )) echo $(( x++ )) | 5 6 | 
| – | post-decrement (subtract variable value by 1) | x=5 echo $(( x– )) | 4 | 
| ** | Exponentiation | x=2 y=3 echo $(( x **y )) | 8 | 
运算符按优先级顺序进行评估。这些级别按优先级从高到低的顺序列出(引用 bash 手册页中的内容):
id++ id--
        variable post-increment and post-decrement
++id --id
        variable pre-increment and pre-decrement
- +    unary minus and plus
! ~    logical and bitwise negation
**     exponentiation
* / %  multiplication, division, remainder
+ -    addition, subtraction
<< >>  left and right bitwise shifts
<= >= < >
        comparison
== !=  equality and inequality
&      bitwise AND
^      bitwise exclusive OR
|      bitwise OR
&&     logical AND
||     logical OR
expr?expr:expr
        conditional operator
= *= /= %= += -= <<= >>= &= ^= |=
        assignment
expr1, expr2
        comma
