Linux-Shell判断循环,函数实例,状态码-07

一、分支语句

==结束语句等于开始语句得单词反着写==

1.1 if语句

bash 复制代码
if 表达式;then
    逻辑处理
elif 表达式;then
    逻辑处理
else
    逻辑处理
fi

如果想把then换到另一行切记:需要把分号去掉,如果将把if和then同行写,一定要加分号

1.1.1 单支语句

$1代表获取当前第一个参数

1.1.2 双分支语句

1.1.3 多分支语句

1.2 case条件结构语句

1.2.1 case语法结构

与java中的swicth一样的效果

bash 复制代码
case 表达式 in
值)
;;
esac

​

我们在脚本中传入一个参数,如果是1就是第一季度......

1.2.2 case与if的对比

case他的范围没有if大,case只能来代表一个具体的值,而if支持大于小于,我们的case只能当与哪个值相等的时候,才会成功

二、循环语句

2.1 for循环

2.1.1 列表for循环(常用)

bash 复制代码
#!/bin/bash

for i in 取值列表 do

  循环主体/命令
done

我们可以将取值列表来当作一个数组,而我们的$@是我们传入来的所有参数,进行遍历

2.1.2 类似C语言的风格

bash 复制代码
for((exp1;exp2;exp3))
  do
   指令...
 done  

编写类似C语言风格脚本

打印一下从1到10

2.2 while语法

while:当...时候,满足条件执行

基本结构:

bash 复制代码
while 条件
 do
	命令
done

循环如果num大于10就跳出循环

2.3 until循环

until:直到...时候,不满足条件执行

基本结构

bash 复制代码
until condition
  	do something...
done

2.4 跳出循环

shell中也支持break跳出循环, continue跳出本次循环.用法与C, Java中相同

我们先做break,如果遍历到6就跳出循环

使用 continue,如果是偶数就执行,不是偶数执行下次循环

三、函数

Shell 函数的本质是一段可以重复使用的脚本代码,这段代码被提前编写好了,放在了指定的位置,使用时直接调取即可。

Shell 中的函数和C++JavaPythonC# 等其它编程语言中的函数类似,只是在语法细节有所差别。

3.1 基本语法

bash 复制代码
function name() {
    statements
    [return value]
}

对各个部分的说明:

  • function是 Shell 中的关键字,专门用来定义函数;

  • name是函数名;

  • statements是函数要执行的代码,也就是一组语句;

  • return value表示函数的返回值,其中 return 是 Shell 关键字,专门用在函数中返回一个值;这一部分可以写也可以不写。

由包围的部分称为函数体,调用一个函数,实际上就是执行函数体中的代码。

3.2 函数定义的简化写法

如果你嫌麻烦,函数定义时也可以不写 function 关键字:

bash 复制代码
name() {
    statements
    [return value]
}

如果写了 function 关键字,也可以省略函数名后面的小括号:

bash 复制代码
function name {
    statements
    [return value]
}

建议使用标准的写法,这样能够做到"见名知意",一看就懂。

3.3 函数调用

调用 Shell 函数时可以给它传递参数,也可以不传递。如果不传递参数,直接给出函数名字即可:

bash 复制代码
name

如果传递参数,那么多个参数之间以空格分隔:

bash 复制代码
name param1 param2 param3

不管是哪种形式,函数名字后面都不需要带括号

示例一:

定义一个函数:

示例二:

使用 $@ 来遍历函数参数,定义一个函数,计算所有参数的和:

四、状态码

Shell 中运行的命令会使用0-255之间的整数值,作为退出状态码,并以此来告知shell该命令执行的状态。通常情况下,约定0代表命令成功结束,非0代表程序非正常退出

典型退出状态码及其含义
退出状态码 含义
0 命令运行成功
1 通知未知错误
2 误用shell命令
126 命令不可执行
127 没有找到命令
128 无效退出参数
128+x linux信号x的严重错误
130 命令通过Ctrl+C终止
255 退出状态码越界
  1. $?:返回上一条语句或脚本执行的状态
  • 0:成功

  • 1-255:不成功

  1. exit 命令,用于退出脚本或当前Shell

exit 命令n 是一个从 0 到 255 的整数 ,0 表示成功退出,非零表示遇到某种失败 ,返回值被保存在状态变量 $? 中

bash 复制代码
exit  n

4.1 示例

示例一:

未指定函数返回值,且函数最后一条命令执行成功

制造错误命令实现

说明:由于此时未指定返回值,所以以函数最后一条被执行的命令echo "Hello World";的执行状态作为函数的退出状态。此时 echo "Hello World";执行成功,所以返回0作为退出状态码。

示例二

我们的返回值代替了上一行的状态码

测试超过255以外的状态码

说明:hello函数指定了函数返回值为333,由于260超出了0~255,所以需要对指定的返回值进行一次取模运算,所以退出状态码由333变更为77。

示例三

指定函数返回值,但返回值前发生命令报错

函数中一条命令执行报错并不会影响后续代码的执行

示例四

使用exit退出程序

五、作业

打印九九乘法表,打印四种

3.

答案:

​​​​​​​

相关推荐
laimaxgg7 分钟前
Linux关于华为云开放端口号后连接失败问题解决
linux·运维·服务器·网络·tcp/ip·华为云
浪小满9 分钟前
linux下使用脚本实现对进程的内存占用自动化监测
linux·运维·自动化·内存占用情况监测
东软吴彦祖22 分钟前
包安装利用 LNMP 实现 phpMyAdmin 的负载均衡并利用Redis实现会话保持nginx
linux·redis·mysql·nginx·缓存·负载均衡
卷卷的小趴菜学编程1 小时前
c++之List容器的模拟实现
服务器·c语言·开发语言·数据结构·c++·算法·list
艾杰Hydra1 小时前
LInux配置PXE 服务器
linux·运维·服务器
多恩Stone1 小时前
【ubuntu 连接显示器无法显示】可以通过 ssh 连接 ubuntu 服务器正常使用,但服务器连接显示器没有输出
服务器·ubuntu·计算机外设
慵懒的猫mi1 小时前
deepin分享-Linux & Windows 双系统时间不一致解决方案
linux·运维·windows·mysql·deepin
Allen Bright1 小时前
使用 JMeter 的 Autostop Listener 插件:自动化性能测试的守护者
运维·jmeter·自动化
晚秋贰拾伍1 小时前
设计模式的艺术-代理模式
运维·安全·设计模式·系统安全·代理模式·运维开发·开闭原则
阿无@_@1 小时前
2、ceph的安装——方式二ceph-deploy
linux·ceph·centos