6、流程控制(重点)
文章目录
- 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、流程控制(重点)相关推荐
- 采购流程控制的六个重点环节
一般来说,"管理下的支出(SUM)"是指企业积极管理的支出所占的百分比,管理依据是类别管理原则,或者明智的决策--企业通过最高价值的解决方案购买相同种类的商品和服务.SUM百分比是 ...
- mysql 控制函数库_数据库开发——MySQL——函数与流程控制
一.函数 1.介绍 1.1.数学函数 ROUND(x,y) 返回参数x的四舍五入的有y位小数的值 RAND() 返回0到1内的随机值,可以通过提供一个参数(种子)使RAND()随机数生成器生成一个指定 ...
- MySQL 之视图、 触发器、事务、存储过程、内置函数、流程控制、索引(二)
继上文 --------------------------------------------------------------------注:如果你对python感兴趣,我这有个学习Python ...
- MySQL 之视图、 触发器、事务、存储过程、内置函数、流程控制、索引(一)
阅读目录 本文内容: 视图 触发器 事务 存储过程 内置函数 流程控制 索引 一.视图 视图就是通过查询得到一张虚拟表,然后保存下来,下次直接使用即可. 如果要频繁使用一张虚拟表,可以不用重复查询 视 ...
- [系统安全] 六.逆向分析之条件语句和循环语句源码还原及流程控制
您可能之前看到过我写的类似文章,为什么还要重复撰写呢?只是想更好地帮助初学者了解病毒逆向分析和系统安全,更加成体系且不破坏之前的系列.因此,我重新开设了这个专栏,准备系统整理和深入学习系统安全.逆向分 ...
- [安全攻防进阶篇] 四.逆向分析之条件语句和循环语句源码还原及流程控制逆向
从2019年7月开始,我来到了一个陌生的专业--网络空间安全.初入安全领域,是非常痛苦和难受的,要学的东西太多.涉及面太广,但好在自己通过分享100篇"网络安全自学"系列文章,艰难 ...
- c#switch语句判断成绩_C#程序流程控制 知多少?
最近发现读书是个慢过程,很难一口吃个胖子,尤其读这种技术类的书,需要细嚼慢咽的精读,很耐心的读.迄今为止我一个像样的C#程序都没有做过,是小白中的小白,这倒不影响什么,毕竟在曾经学过C语言的,再去学习 ...
- Python基础篇:Python 程序流程控制,让你的代码有理有据
前言 大家好,辣条哥又来了,昨天出去玩了没有更新,所以今天直接来干的,跟大家讲一下Python 程序的流程控制 和其它编程语言一样,按照执行流程划分,Python 程序也可分为 3 大结构,即顺序结构 ...
- 14 MySQL--事务函数与流程控制
一.事务 事务用于将某些操作的多个SQL作为原子性操作,一旦有某一个出现错误,即可回滚到原来的状态,从而保证数据库数据完整性. 一堆sql语句:要么同时执行成功,要么同时失败 # 事务的原子性场景: ...
最新文章
- 数据不能产生价值都是耍流氓
- java 判断 年份,java怎么判断指定年份是否是闰年
- Python之 sklearn:sklearn中的RobustScaler 函数的简介及使用方法之详细攻略
- 集成学习(ensemble learning)(三)
- 工业机器人电路图讲解话术_6张经典电路图分析助你进阶高级电工,你都会了吗?...
- 做片子留着备用 超级游戏影视配乐音效库36套合集
- 数据结构/排序/归并排序/二路归并排序
- 【Java工具类】非对称加密之RSA算法工具类(分段处理)
- 美丽杭州,魅力杭州:弘阳地产水城新时代
- 使用 Illustrator 中组合形状的方法详解
- 项目管理(课程总结1)Week1 澳大利亚维多利亚大学VIT1203 Introduction to Project Management
- C. Minimum Ties
- 北京住房公积金管理中心个人住房公积金 贷款等额均还月还款额参考表
- mfc入门基础(四)对话框添加控件、创建对话框类和为对话框控件添加变量
- Android实现截屏
- 高薪程序员面试题精讲系列39之说说HashMap的特点及其底层数据结构
- CH455 数码管驱动以及键盘控制芯片 应用笔记
- arduino串口点灯
- php安装mcrypt扩展
- 无符号与有符号类型转换和值为负数情况
热门文章
- 计算机中的 英语字母是什么,计算机中的清除键是什么英语字母表示?
- 评测最好用的电影台词长截图自动拼接工具!(安卓/iOS)
- 技校学计算机工资,本人想去技校学习计算机,请问计算机好学吗,这个行业怎么样,学成之后工资如何...
- 如何让 Xcode 在运行时问题(表示为紫色的小三角形)被发现时就立即中断以供调试
- 第01课:什么是微服务?
- 计算机竞赛主持人开场白台词,六一主持词开场白台词.doc
- CCPD数据集+yolov5+智能驾驶车牌检测
- 美容仪器设计时需要考虑女性的需求
- 城市简码_在WordPress中使用简码的7个基本技巧
- OSChina 周六乱弹 —— 吉祥如意的 2015