一、运算符
1、基本语法
- "$((运算式))" 或 "$[运算式]"
- expr + , - , \*, /, % 加,减,乘,除,取余
注意:expr 运算符间要有空格
2、案例实操
(1)计算3+2的值
[root@centos7 shell_test]# expr 2 + 3 5
(2)计算3-2的值
[root@centos7 shell_test]# expr 3 - 2 1
(3)计算(2+3)X4的值
- expr一步完成计算
[root@centos7 shell_test]# expr `expr 2 + 3` \* 4 20
- 采用$[运算式]方式
[root@centos7 shell_test]# S=$[(2+3)*4] [root@centos7 shell_test]# echo $S
二、if 判断
1、基本语法
if [ 条件判断式 ];then 程序 fi 或者 if [ 条件判断式 ] then 程序 fi
注意事项:
- [ 条件判断式 ],中括号和条件判断式之间必须有空格
- if 后要有空格
2、案例实操
输入一个数字,如果是1,则输出banzhang zhen shuai,如果是2,则输出cls zhen mei,如果是其它,什么也不输出。
[root@centos7 shell_test]# touch if.sh [root@centos7 shell_test]# vim if.sh #!/bin/bash if [ $1 -eq "1" ] then echo "banzhang zhen shuai" elif [ $1 -eq "2" ] then echo "cls zhen mei" fi
三、case 语句
1、基本语法
case $变量名 in "值1") 如果变量的值等于值1,则执行程序1 ;; "值2") 如果变量的值等于值2,则执行程序2 ;; …省略其他分支… *) 如果变量的值都不是以上的值,则执行此程序 ;; esac
注意事项:
- case行尾必须为单词“in”,每一个模式匹配必须以右括号“)”结束。
- 双分号“;;”表示命令序列结束,相当于java中的break。
- 最后的“*)”表示默认模式,相当于java中的default。
2、案例实操
输入一个数字,如果是1,则输出banzhang,如果是2,则输出cls,如果是其它,输出renyao。
[root@centos7 shell_test]# touch case.sh [root@centos7 shell_test]# vim case.sh #!/bin/bash case $1 in "1") echo "banzhang" ;; "2") echo "cls" ;; *) echo "renyao" ;; esac
四、for 循环
1、基本语法1
for (( 初始值;循环控制条件;变量变化 )) do 程序 done
2、案例实操
从1加到100
[root@centos7 shell_test]# touch for1.sh [root@centos7 shell_test]# vim for1.sh #!/bin/bash s=0 for((i=0;i<=100;i++)) do s=$[$s+$i] done echo $s
3、基本语法2
for 变量 in 值1 值2 值3… do 程序 done
4、案例实操
打印所有输入参数
#!/bin/bash #打印数字 for i in $* do echo "ban zhang love $i " done echo "================================" for i in $@ do echo "ban zhang love $i " done echo "================================" for i in "$*" do echo "ban zhang love $i " done echo "================================" for i in "$@" do echo "ban zhang love $i " done
测试
[root@centos7 shell_test]# sh for2.sh 11 22 33 44 ban zhang love 11 ban zhang love 22 ban zhang love 33 ban zhang love 44 ================================ ban zhang love 11 ban zhang love 22 ban zhang love 33 ban zhang love 44 ================================ ban zhang love 11 22 33 44 ================================ ban zhang love 11 ban zhang love 22 ban zhang love 33 ban zhang love 44
5、比较$*和$@区别
- $*和$@都表示传递给函数或脚本的所有参数,不被双引号“”包含时,都以$1 $2 …$n的形式输出所有参数。
- 当它们被双引号“”包含时,“$*”会将所有的参数作为一个整体,以“$1 $2 …$n”的形式输出所有参数;“$@”会将各个参数分开,以“$1” “$2”…”$n”的形式输出所有参数。
五、while 循环
1、基本语法
while [ 条件判断式 ] do 程序 done
2、案例实操
从1加到100
[root@centos7 shell_test]# touch while.sh [root@centos7 shell_test]# vim while.sh #!/bin/bash s=0 i=1 while [ $i -le 100 ] do s=$[$s+$i] i=$[$i+1] done echo $s