6,流程控制(重点)(if-case-for-while)

6.1、流程控制(重点)(if/case/for/while)

6.1.1、语法

1)单分支
if [ 条件判断式 ];then
    程序
fi

if [ 条件判断式 ]
then
    程序
fi
2)多分支
if [ 条件判断式 ]
then
    程序
elif [ 条件判断式 ]
then
    程序
else
    程序
fi

注意事项:

  • [ 条件判断式 ], 中括号和条件判断式之间必须有空格
  • if 后要有空格

6.1.2、案例

1)案例1:简单判断

创建1.sh,内容如下,用来判断2个参数大小

#!/bin/bash
if [ $1 -gt $ $2 ]
then
 echo "true"

else
 echo "false"

fi

运行文件如下

root@ubuntu:~# ./1.sh 2 5
false
root@ubuntu:~# ./1.sh 10 5
true
root@ubuntu:~#

###2)案例2:复合条件判断
创建2.sh,内容如下,脚本有3个参数,判断:参数1>参数2个 && 参数2 > 参数3

#!/bin/bash
if [ $1 -gt $2 ] && [ $2 -gt $3 ]
        then
                echo "true"
fi

运行结果如下

root@ubuntu:~# ./2.sh 1 2 3
root@ubuntu:~# ./2.sh 3 2 1
true
root@ubuntu:~#
root@ubuntu:~#
root@ubuntu:~#
root@ubuntu:~#

3)案例3:多条件判断

创建3.sh,内容如下,这个脚本会根据用户输入的第1个参数,输出对应的结果

if [ $1 = "a" ]; then
      echo "java"
elif [ $1 = "b" ]; then
      echo "php"
else
      echo "linux"

fi

运行结果如下

root@ubuntu:~#
root@ubuntu:~# ./3.sh a
java
root@ubuntu:~# ./3.sh b
php
root@ubuntu:~# ./3.sh c
linux
root@ubuntu:~# ./3.sh "xxx"
linux
root@ubuntu:~#

6.2、case语句

6.2.1、语法

case $变量名 in
"值 1")
如果变量的值等于值 1, 则执行程序 1
;;
"值 2")
如果变量的值等于值 2, 则执行程序 2
;;
…省略其他分支…
*)
如果变量的值都不是以上的值, 则执行此程序
;;
esac

6.2.2、注意事项

  • case 行尾必须为单词“in” , 每一个模式匹配必须以右括号“) ” 结束
  • 双分号“;;” 表示命令序列结束, 相当于 java 中的 break
  • 最后的“*) ” 表示默认模式, 相当于 java 中的 default

6.2.3、案例

需求:输入一个数字,如果是1,则输出java,如果是2,则输出php,否则,输出linux。
创建case.sh,内容如下

#!/bin/bash
case $1 in
"1")
        echo "java"
;;
"2")
        echo "php"
;;
*)
        echo "linux"
esac

执行结果如下

root@ubuntu:~# ./case.sh 1
java
root@ubuntu:~# ./case.sh 2
php
root@ubuntu:~# ./case.sh 3
linux
root@ubuntu:~# ./case.sh 5555
linux
root@ubuntu:~#

6.4、for循环

6.4.1、语法1

for (( 初始值;循环控制条件;变量变化 ))
do
    程序
done

6.4.2、案例:计算从1加到100

#!/bin/bash
sum=0;
for((i=1;i<=100;i++))
do
        sum=$[$sum+$i]
done

echo "计算结果===>"$sum

执行for1.sh

[root@localhost ~]# ./for1.sh
计算结果===>5050
[root@localhost ~]# ./for1.sh
计算结果===>5050

6.4.3、语法2

for 变量 in 值1 值2 值3…
do
    程序
done

6.4.4、案例

创建for2.sh,内容如下

#!/bin/bash
for i in "java" "springboot" "linux"
do
    echo "技术 ==> $i"
done

运行for2.sh

[root@localhost ~]# ./for2.sh
技术 ==> java
技术 ==> springboot
技术 ==> linux
[root@localhost ~]#

6.4.5、比较$*$@区别

$*$@都表示传递给函数或脚本的所有参数, 不被双引号""包含时, 都以$1 $2 …$n的形式输出所有参数。
创建vi for3.sh ,内容如下

#!/bin/bash
echo "========$*======="
for i in $*
do
        echo "参数:$i"
done
echo "========$@======="
for i in $@
do
        echo "参数:$i"
done

执行结果如下

[root@localhost ~]# ./for3.sh 1 2 3 3 4
===========1 2 3 3 4===========
参数:1
参数:2
参数:3
参数:3
参数:4
==========1 2 3 3 4==========
参数:1
参数:2
参数:3
参数:3
参数:4
[root@localhost ~]#

当它们被双引号“”包含时, $*会将所有的参数作为一个整体, 以“$1 $2 …$n”的形式输出所有参数; $@会将各个参数分开, 以“$1” “$2”…“$n”的形式输出所有参数
创建vi for4.sh ,内容如下

#!/bin/bash
echo "========$*======="
for i in "$*"
do
        echo "参数:$i"
done
echo "========$@======="
for i in "$@"
do
        echo "参数:$i"
done

如下,输入3个参数,测试效果,$*的for只输出了一次,而$@输出了3次,这就是区别

[root@test001 shells]# ./for4.sh java linux js
========java linux js=======
参数:java linux js
========java linux js=======
参数:java
参数:linux
参数:js

6.5、while循环

6.5.1、语法

while [ 条件判断式 ]
do
    程序
done
6.5.2、案例:计算从1加到100

创建while.sh,内容如下

#!/bin/bash
sum=0
i=1
while [ $i -le 100 ]
do
    sum=$[$sum+$i]
    i=$[$i+1]
done
echo "结果:$sum"

执行while.sh

[root@test001 shells]# chmod +x while.sh
[root@test001 shells]# ./while.sh
结果:5050
  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值