文章目录

  • 6、流程控制(重点)
    • 6.1 if 判断
    • 6.2 case 语句
    • 6.3 for 循环
    • 6.4 while 循环

尚硅谷2022版Linux扩展篇Shell教程-讲师:武晟然

壁立千仞 无欲则刚

6、流程控制(重点)

6.1 if 判断

1)基本语法
(1)单分支

if [ 条件判断式 ];then
程序
fi

或者

if [ 条件判断式 ]
then
程序
fi

(2)多分支

if [ 条件判断式 ]
then
程序
elif [ 条件判断式 ]
then
程序
else
程序
fi

注意事项:
①[ 条件判断式 ],中括号和条件判断式之间必须有空格
②if 后要有空格
2)案例实操
输入一个数字,如果是 1,则输出 one,如果是 2,则输出 tow,
如果是其它,输出number。

[root@centos7-101 scripts]# touch if.sh
[root@centos7-101 scripts]# vim if.sh
#!/bin/bash
if [ $1 -eq 1 ]
then
echo "one"
elif [ $1 -eq 2 ]
then
echo "tow"
else
echo "number"
fi[root@centos7-101 scripts]# chmod u+x if.sh
[root@centos7-101 scripts]# ./if.sh 1
one

问题
如果不输入参数就会报错

[root@centos7-101 scripts]# ./if.sh
./if.sh: 第 2 行:[: -eq: 期待一元表达式
./if.sh: 第 5 行:[: -eq: 期待一元表达式
number

解决

#!/bin/bash
if [ "$1"x = "1"x ]
then
echo "one"
elif [ "$1"x = "2"x ]
then
echo "tow"
else
echo "number"
fi

6.2 case 语句

1)基本语法
case $变量名 in
“值 1”)
如果变量的值等于值 1,则执行程序 1
;;
“值 2”)
如果变量的值等于值 2,则执行程序 2
;;
…省略其他分支…
*)
如果变量的值都不是以上的值,则执行此程序
;;
esac
注意事项:
(1)case 行尾必须为单词“in”,每一个模式匹配必须以右括号“)”结束。
(2)双分号“;;”表示命令序列结束,相当于 java 中的 break。
(3)最后的“*)”表示默认模式,相当于 java 中的 default。
2)案例实操
输入一个数字,如果是 1,则输出 one,如果是 2,则输出 tow,如果是其它,输出number。

[root@centos7-101 scripts]# touch case.sh
[root@centos7-101 scripts]# vim case.sh
#!/bin/bash
case $1 in
"1")
echo "one"
;;
"2")
echo "tow"
;;
*)
echo "number"
;;
esac[root@centos7-101 scripts]# chmod u+x case.sh
[root@centos7-101 scripts]# ./case.sh 1
one
[root@centos7-101 scripts]# ./case.sh 2
tow
[root@centos7-101 scripts]# ./case.sh 3
number

6.3 for 循环

1)基本语法 1
for (( 初始值;循环控制条件;变量变化 ))
do
程序
done
2)案例实操
从 1 加到 100

[root@centos7-101 scripts]# touch for1.sh
[root@centos7-101 scripts]# vim for1.sh
#!/bin/bash
sum=0
# 在双小括号内,可以使用数学上的符号进行数字比较
for((i=0;i<=100;i++))
do
sum=$[$sum+$i]
done
echo $sum[root@centos7-101 scripts]# chmod u+x for1.sh
[root@centos7-101 scripts]# ./for1.sh
5050

3)基本语法 2
for 变量 in 值 1 值 2 值 3…
do
程序
done
4)案例实操
(1)打印所有输入参数

[root@centos7-101 scripts]# touch for2.sh
[root@centos7-101 scripts]# vim for2.sh
#!/bin/bash
for i in windows linux macos
do
echo "$i"
done[root@centos7-101 scripts]# chmod u+x for2.sh
[root@centos7-101 scripts]# ./for2.sh
windows
linux
macos

(2)比较$*和$@区别

$*和$@都表示传递给函数或脚本的所有参数,不被双引号“”包含时,都以$1 $2 …$n的形式输出所有参数。

[root@centos7-101 scripts]# touch for3.sh
[root@centos7-101 scripts]# vim for3.sh
#!/bin/bash
echo '==========$*========='
for i in $*
do
echo $i
done
echo '==========$@========='
for i in $@
do
echo $i
done[root@centos7-101 scripts]# chmod u+x for3.sh
[root@centos7-101 scripts]# ./for3.sh a b c d e f
==========$*=========
a b c d e f
==========$@=========
a b c d e f

当它们被双引号“”包含时,$*会将所有的参数作为一个整体,以“$1 $2 …$n”的形式输出所有参数;$@会将各个参数分开,以“$1” “$2”…“$n”的形式输出所有参数。

[root@centos7-101 scripts]# vim for3.sh
#!/bin/bash
echo '==========$*========='
#$*中的所有参数看成是一个整体,所以这个 for 循环只会循环一次
for i in $*
do
echo $i
done
echo '==========$@========='
#$@中的每个参数都看成是独立的,所以“$@”中有几个参数,就会循环几次
for i in $@
do
echo $i
done[root@centos7-101 scripts]# ./for3.sh a b c d e f
==========$*=========
a b c d e f
==========$@=========
a b c d e f

6.4 while 循环

1)基本语法
while [ 条件判断式 ]
do
程序
done
2)案例实操
从 1 加到 100

[root@centos7-101 scripts]# touch while.sh
[root@centos7-101 scripts]# vim while.sh
#!/bin/bash
sum=0
i=1
while [ $i -le 100 ]
do
sum=$[$sum+$i]
i=$[$i+1]
# len a++
done
echo $sum[root@centos7-101 scripts]# chmod u+x while.sh
[root@centos7-101 scripts]# ./while.sh
5050

6、流程控制(重点)相关推荐

  1. 采购流程控制的六个重点环节

    一般来说,"管理下的支出(SUM)"是指企业积极管理的支出所占的百分比,管理依据是类别管理原则,或者明智的决策--企业通过最高价值的解决方案购买相同种类的商品和服务.SUM百分比是 ...

  2. mysql 控制函数库_数据库开发——MySQL——函数与流程控制

    一.函数 1.介绍 1.1.数学函数 ROUND(x,y) 返回参数x的四舍五入的有y位小数的值 RAND() 返回0到1内的随机值,可以通过提供一个参数(种子)使RAND()随机数生成器生成一个指定 ...

  3. MySQL 之视图、 触发器、事务、存储过程、内置函数、流程控制、索引(二)

    继上文 --------------------------------------------------------------------注:如果你对python感兴趣,我这有个学习Python ...

  4. MySQL 之视图、 触发器、事务、存储过程、内置函数、流程控制、索引(一)

    阅读目录 本文内容: 视图 触发器 事务 存储过程 内置函数 流程控制 索引 一.视图 视图就是通过查询得到一张虚拟表,然后保存下来,下次直接使用即可. 如果要频繁使用一张虚拟表,可以不用重复查询 视 ...

  5. [系统安全] 六.逆向分析之条件语句和循环语句源码还原及流程控制

    您可能之前看到过我写的类似文章,为什么还要重复撰写呢?只是想更好地帮助初学者了解病毒逆向分析和系统安全,更加成体系且不破坏之前的系列.因此,我重新开设了这个专栏,准备系统整理和深入学习系统安全.逆向分 ...

  6. [安全攻防进阶篇] 四.逆向分析之条件语句和循环语句源码还原及流程控制逆向

    从2019年7月开始,我来到了一个陌生的专业--网络空间安全.初入安全领域,是非常痛苦和难受的,要学的东西太多.涉及面太广,但好在自己通过分享100篇"网络安全自学"系列文章,艰难 ...

  7. c#switch语句判断成绩_C#程序流程控制 知多少?

    最近发现读书是个慢过程,很难一口吃个胖子,尤其读这种技术类的书,需要细嚼慢咽的精读,很耐心的读.迄今为止我一个像样的C#程序都没有做过,是小白中的小白,这倒不影响什么,毕竟在曾经学过C语言的,再去学习 ...

  8. Python基础篇:Python 程序流程控制,让你的代码有理有据

    前言 大家好,辣条哥又来了,昨天出去玩了没有更新,所以今天直接来干的,跟大家讲一下Python 程序的流程控制 和其它编程语言一样,按照执行流程划分,Python 程序也可分为 3 大结构,即顺序结构 ...

  9. 14 MySQL--事务函数与流程控制

    一.事务 事务用于将某些操作的多个SQL作为原子性操作,一旦有某一个出现错误,即可回滚到原来的状态,从而保证数据库数据完整性. 一堆sql语句:要么同时执行成功,要么同时失败 # 事务的原子性场景: ...

最新文章

  1. 数据不能产生价值都是耍流氓
  2. java 判断 年份,java怎么判断指定年份是否是闰年
  3. Python之 sklearn:sklearn中的RobustScaler 函数的简介及使用方法之详细攻略
  4. 集成学习(ensemble learning)(三)
  5. 工业机器人电路图讲解话术_6张经典电路图分析助你进阶高级电工,你都会了吗?...
  6. 做片子留着备用 超级游戏影视配乐音效库36套合集
  7. 数据结构/排序/归并排序/二路归并排序
  8. 【Java工具类】非对称加密之RSA算法工具类(分段处理)
  9. 美丽杭州,魅力杭州:弘阳地产水城新时代
  10. 使用 Illustrator 中组合形状的方法详解
  11. 项目管理(课程总结1)Week1 澳大利亚维多利亚大学VIT1203 Introduction to Project Management
  12. C. Minimum Ties
  13. 北京住房公积金管理中心个人住房公积金 贷款等额均还月还款额参考表
  14. mfc入门基础(四)对话框添加控件、创建对话框类和为对话框控件添加变量
  15. Android实现截屏
  16. 高薪程序员面试题精讲系列39之说说HashMap的特点及其底层数据结构
  17. CH455 数码管驱动以及键盘控制芯片 应用笔记
  18. arduino串口点灯
  19. php安装mcrypt扩展
  20. 无符号与有符号类型转换和值为负数情况

热门文章

  1. 计算机中的 英语字母是什么,计算机中的清除键是什么英语字母表示?
  2. 评测最好用的电影台词长截图自动拼接工具!(安卓/iOS)
  3. 技校学计算机工资,本人想去技校学习计算机,请问计算机好学吗,这个行业怎么样,学成之后工资如何...
  4. 如何让 Xcode 在运行时问题(表示为紫色的小三角形)被发现时就立即中断以供调试
  5. 第01课:什么是微服务?
  6. 计算机竞赛主持人开场白台词,六一主持词开场白台词.doc
  7. CCPD数据集+yolov5+智能驾驶车牌检测
  8. 美容仪器设计时需要考虑女性的需求
  9. 城市简码_在WordPress中使用简码的7个基本技巧
  10. OSChina 周六乱弹 —— 吉祥如意的 2015