shell脚本8,保姆篇---春不晚

免责声明

学习视频来自 B 站up主泷羽sec,如涉及侵权马上删除文章。

笔记的只是方便各位师傅学习知识,以下代码、网站只涉及学习内容,其他的都与本人无关,切莫逾越法律红线,否则后果自负。

泷羽sec官网:https://longyusec.com/

泷羽sec B站地址:https://space.bilibili.com/350329294

泷羽sec帮会:https://wiki.freebuf.com/front/societyFront?invitation_code=5a2005d9&society_id=239&source_data=2

until循环

  • until循环与for,while循环大体都是一样的,都是do开始,done结束
  • 在 Shell脚本中,until是一种循环控制结构。它的作用与while循环相反。while循环是在条件为真时执行循环体,而until循环是在条件为假时执行循环体,直到条件变为真时停止循环。

脚本如下:

i=0
until [ ! $i -lt 10 ] 
do
        echo "$i"
        ((i++))
done

代码功能

这段 Shell 脚本使用了 until 循环结构来实现从 0 开始,每次递增 1,直到变量 i 的值不小于 10(即大于等于 10)时停止循环,并在每次循环中输出当前 i 的值。
代码解析

  • 变量初始化:

     首先通过 i = 0 对变量 i 进行初始化,将其值设置为 0。这里要注意,在严格的 Shell 脚本语法中,赋值语句左右两边一般不应该有空格,正确写法应该是 i=0,不过有些 Shell 环境可能对这种小的格式问题有一定容错。
    
  • until 循环条件:

     until [! $i -lt 10 ] 是循环的条件判断部分。这里的 [ ] 实际上是 test 命令的一种简写形式,用于进行条件测试。
     表达式 $i -lt 10 表示判断变量 i 是否小于 10。而在其前面加上 ! 表示取反,所以整个循环条件就是当变量 i 不小于 10(即大于等于 10)时,循环停止执行。
    
  • 循环体操作:

     在循环体中,首先通过 echo "$i" 输出当前变量 i 的值。
     然后通过 ((i++)) 实现对变量 i 的自增操作,每次循环后 i 的值会增加 1。
    

示例1
在这里插入图片描述

case选择语句结构:

前言

与众多的编程语言一样,shell中也有case分支语句,这个语句的用处很是广泛,而且也是可以配合其他的语句进行使用的

这里进行case语句的简单了解,想要更深入的了解,可以自己去想什么地方能用到case分支语句

就比如一个简单的终端交互,用户输入对应的数字使用对应的功能,使用if语句过于繁杂,这个语句就可以解决
实操

数字型

read -p "plesse enter a number: " num
case $num in 
        1)echo "you enter the number is 1"
        ;;
        2)echo " your enter the number is 2"
        ;;
        *)echo " you enter the number is everthing"
        ;;
esac

代码功能

这段 Shell 脚本实现了一个简单的交互式功能,它会提示用户输入一个数字,然后根据用户输入的数字执行不同的输出操作。如果用户输入 1,就输出相应提示表明输入的是 1;输入 2,输出相应提示表明输入的是 2;输入其他任何内容,则输出提示表明输入的是其他任意情况。

代码解析

  • 读取用户输入:

     read -p "plesse enter a number: " num 这一行用于读取用户输入的内容,并将其存储到变量 num 中。其中,-p 选项用于在读取输入之前显示指定的提示信息,这里的提示信息就是 “plesse enter a number:”,让用户知道需要输入一个数字。
    
  • case 语句判断:

     case $num in 开始了一个 case 语句结构,用于根据变量 num 的值进行不同情况的分支处理。
     对于 num 的不同取值情况:
         当 num 的值为 1 时,即 1) 分支:会执行 echo "you enter the number is 1",输出提示信息表明用户输入的数字是 1,最后的 ;; 表示这个分支的结束标识。
         当 num 的值为 2 时,即 2) 分支:会执行 echo " your enter the number is 2",输出提示信息表明用户输入的数字是 2,同样以 ;; 结束这个分支。
         当 num 的值为其他任何情况时,即 *) 分支:会执行 echo " you enter the number is everthing",输出提示信息表明用户输入的是其他任意情况,也以 ;; 结束。
    

示例
在这里插入图片描述

字符型

当然上面是数字形式,这里也可以是字符串的形式

read -p "please enter a character : " character
case $character in 
        "long")echo "your enter is long"
                ;;
        "yu")echo "your enter is yu"
                ;;
        *)echo "sorry, I don't no"
                ;;
esac

代码解析

  • 读取用户输入:

     read -p "please enter a character : " character 这一行用于读取用户输入的内容,并将其存储到变量 character 中。其中,-p 选项用于在读取输入之前显示指定的提示信息,这里的提示信息就是 “please enter a character :”,让用户知道需要输入一个字符(或字符串)。
    
  • case 语句判断:

     case $character in 开始了一个 case 语句结构,用于根据变量 character 的值进行不同情况的分支处理。
     对于 character 的不同取值情况:
         当 character 的值为 “long” 时,即 “long”) 分支:会执行 echo "your enter is long",输出提示信息表明用户输入的是 “long”,最后的 ;; 表示这个分支的结束标识。
         当 character 的值为 “yu” 时,即 “yu”) 分支:会执行 echo "your enter is yu",输出提示信息表明用户输入的是 “yu”,同样以 ;; 结束这个分支。
         当 character 的值为其他任何情况时,即 *) 分支:会执行 echo "sorry, I don't no",输出提示信息表明不知道用户输入的是什么,也以 ;; 结束。
    

在这里插入图片描述

shell函数的基本知识

前言

与c语言中一样,定义函数的方式

下面是定义函数的两种方式

函数名(){
	函数体
}

或者
function 函数名(){
	函数体
}

定义变量

demofunc(){
	echo "longyusec, yyds"
}
demofunc

调用方式一

在上述代码的情况下直接输入函数名

在这里插入图片描述
在这里插入图片描述

调用方式二

类似于传参的形式,不过bash中的传参与其他语言中不同,这里是使用$1 2 … 2… 2n作为第1、2…、n个参数(必须保证一一对应,不然会导致参数与变量不匹配,输出为空)

代码演示

demofunc(){
        echo " your enter character is $1"
}
demofunc longyu

代码解析

  • 函数定义:

     demofunc(){ 开始定义一个函数,函数名为 demofunc。
     echo " your enter character is $1" 这一行是函数体内容。在函数体中,通过 $1 来获取传递给函数的第一个参数。这里假设用户输入的字符或字符串被当作参数传递给函数,然后函数会输出一条消息告知用户输入的字符(或字符串)就是所传入的这个参数值。
    
  • 函数调用:

     demofunc longyu 这一行是对 demofunc 函数的调用,并且传入了参数 longyu。当调用这个函数时,函数内部的 $1 就会被赋值为 longyu,然后执行函数体中的 echo 语句,输出 “your enter character is longyu”。
    

在这里插入图片描述

实践是检验真理的唯一标准,请大家积极实践
请大家指出的我问题和需要完善的地方,咱们共同进步
清风.春不晚与诸君共勉,共创辉煌篇章

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值