Shell 运算符/条件判断/流程控制

一、运算符

1、基本语法

  1. "$((运算式))" 或 "$[运算式]"
  2. 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

注意事项:

  1. [ 条件判断式 ],中括号和条件判断式之间必须有空格
  2. 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

注意事项:

  1. case行尾必须为单词“in”,每一个模式匹配必须以右括号“)”结束。
  2. 双分号“;;”表示命令序列结束,相当于java中的break。
  3. 最后的“*)”表示默认模式,相当于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. $*和$@都表示传递给函数或脚本的所有参数,不被双引号“”包含时,都以$1 $2 …$n的形式输出所有参数。
  2. 当它们被双引号“”包含时,“$*”会将所有的参数作为一个整体,以“$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

 

上一篇:[CISCN 2019 初赛]Love Math【国赛】


下一篇:SVG中的path用法