# linux变量默认是字符串类型,需要用declare来进行声明
ubuntu@VM-0-13-ubuntu:~$ a=8;a+=1
ubuntu@VM-0-13-ubuntu:~$ echo $a
81
ubuntu@VM-0-13-ubuntu:~$ declare -i a
# 复合算数运算符
ubuntu@VM-0-13-ubuntu:~$ a=8;a+=2
ubuntu@VM-0-13-ubuntu:~$ echo $a
10
# 位运算符
majun@instance-zqtg07w6:~$ let "c=4<<2"
majun@instance-zqtg07w6:~$ echo $c
16
majun@instance-zqtg07w6:~$ let "c=4>>2"
majun@instance-zqtg07w6:~$ echo $c
1
majun@instance-zqtg07w6:~$ let "c=8&4"
majun@instance-zqtg07w6:~$ echo $c
0
majun@instance-zqtg07w6:~$ let "c=8|4"
majun@instance-zqtg07w6:~$ echo $c
12
majun@instance-zqtg07w6:~$ let "c=10^3"
majun@instance-zqtg07w6:~$ echo $c
9
majun@instance-zqtg07w6:~$ let "c=~10"
majun@instance-zqtg07w6:~$ echo $c
-11
majun@instance-zqtg07w6:~$
# 非运算
# ~a = -(a+1)
# 自增自减运算
majun@instance-zqtg07w6:~$ cat add_minus.sh
#!/bin/bash
Add_01=10
Add_02=10
let "Add_03=(++Add_01)"
let "Add_04=(Add_02++)"
echo "add01:$Add_01"
echo "add02:$Add_02"
echo "add03:$Add_03"
echo "add04:$Add_04"
majun@instance-zqtg07w6:~$ bash add_minus.sh
add01:11
add02:11
add03:11
add04:10
# 使用$[]做运算
majun@instance-zqtg07w6:~$ echo $[1+1]
2
majun@instance-zqtg07w6:~$ echo $[1*21]
21
majun@instance-zqtg07w6:~$ echo $[5/2]
2
majun@instance-zqtg07w6:~$ echo $[5%2]
1
majun@instance-zqtg07w6:~$ echo $[5**2]
25
# 使用expr做运算
majun@instance-zqtg07w6:~$ expr 1+1
1+1
majun@instance-zqtg07w6:~$ expr 1 + 1#要有空格才能运算
2
majun@instance-zqtg07w6:~$ expr 1 * 1
expr: syntax error
majun@instance-zqtg07w6:~$ expr 1 \* 1
1
# declare先声明再运算,不声明默认字符串
majun@instance-zqtg07w6:~$ i=1+1
majun@instance-zqtg07w6:~$ echo $i
1+1
majun@instance-zqtg07w6:~$ declare -i i
majun@instance-zqtg07w6:~$ i=1+1
majun@instance-zqtg07w6:~$ echo $i
2
# $((算数表达式))
majun@instance-zqtg07w6:~$ i=2
majun@instance-zqtg07w6:~$ echo $((2*i+1))
5
majun@instance-zqtg07w6:~$ echo $((2*(i+1)))
6
majun@instance-zqtg07w6:~$ var=$((2*(i+1)))
majun@instance-zqtg07w6:~$ echo $var
6
# 通配符扩展
majun@instance-zqtg07w6:~$ echo {x1,x2,x3}{y1,y2,y3}
x1y1 x1y2 x1y3 x2y1 x2y2 x2y3 x3y1 x3y2 x3y3
majun@instance-zqtg07w6:~$ touch file_{A,B}
majun@instance-zqtg07w6:~$ ls
add_minus.sh export.sh file_B helloworld.sh return.sh shift_01.sh txt
co.txt file_A f.sh read.sh shell shift_02.sh
所有的练习脚本都在:
https://github.com/SaltNego/Learn_linux_bash