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.

答案:

​​​​​​​

相关推荐
云云32135 分钟前
搭建云手机平台的技术要求?
服务器·线性代数·安全·智能手机·矩阵
云云32138 分钟前
云手机有哪些用途?云手机选择推荐
服务器·线性代数·安全·智能手机·矩阵
cominglately1 小时前
centos单机部署seata
linux·运维·centos
魏 无羡1 小时前
linux CentOS系统上卸载docker
linux·kubernetes·centos
CircleMouse1 小时前
Centos7, 使用yum工具,出现 Could not resolve host: mirrorlist.centos.org
linux·运维·服务器·centos
Karoku0662 小时前
【k8s集群应用】kubeadm1.20高可用部署(3master)
运维·docker·云原生·容器·kubernetes
木子Linux2 小时前
【Linux打怪升级记 | 问题01】安装Linux系统忘记设置时区怎么办?3个方法教你回到东八区
linux·运维·服务器·centos·云计算
mit6.8242 小时前
Ubuntu 系统下性能剖析工具: perf
linux·运维·ubuntu
鹏大师运维2 小时前
聊聊开源的虚拟化平台--PVE
linux·开源·虚拟化·虚拟机·pve·存储·nfs
watermelonoops2 小时前
Windows安装Ubuntu,Deepin三系统启动问题(XXX has invalid signature 您需要先加载内核)
linux·运维·ubuntu·deepin