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

一、分支语句

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

1.1 if语句 

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一样的效果

case 表达式 in
值)
;;
esac

​

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

1.2.2 case与if的对比

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

二、循环语句

2.1 for循环

2.1.1 列表for循环(常用)

#!/bin/bash

for i in 取值列表 do

  循环主体/命令
done

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

 

 2.1.2 类似C语言的风格

for((exp1;exp2;exp3))
  do
   指令...
 done  

编写类似C语言风格脚本  

打印一下从1到10

2.2 while语法

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

基本结构:

while 条件
 do
	命令
done

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

 

2.3 until循环

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

基本结构

until condition
  	do something...
done

2.4 跳出循环

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

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

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

三、函数

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

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

3.1 基本语法

function name() {
    statements
    [return value]
}

对各个部分的说明:

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

  • name是函数名;

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

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

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

3.2 函数定义的简化写法

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

name() {
    statements
    [return value]
}

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

function name {
    statements
    [return value]
}

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

3.3 函数调用

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

name

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

name param1 param2 param3

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

示例一:

定义一个函数:

示例二:

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

四、状态码

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

典型退出状态码及其含义
退出状态码含义
0命令运行成功
1通知未知错误
2误用shell命令
126命令不可执行
127没有找到命令
128无效退出参数
128+xlinux信号x的严重错误
130命令通过Ctrl+C终止
255退出状态码越界

1) $?:返回上一条语句或脚本执行的状态

  • 0:成功

  • 1-255:不成功

2) exit 命令,用于退出脚本或当前Shell

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

exit  n

4.1 示例

示例一:

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

制造错误命令实现

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

示例二

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

 

 测试超过255以外的状态码

 

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

示例三

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

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

 

示例四

使用exit退出程序

 

 

五、作业 

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

1.

2. 

 3.

4. 

 

答案:

1.

 

2.

3. 

4.

​​​​​​​

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值