当前位置: 首页 > article >正文

泷羽sec-星河飞雪-shell-7

免责声明

学习视频来自 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循环
      • 代码示例
      • 代码拆解
    • case语句
      • 代码示例
      • 代码功能
    • 函数
      • 代码示例
      • 代码功能与优化说明
      • 额外说明
    • 带有传参的函数
      • 计算两个数的和

until循环

代码示例

i=0

# 当i不小于10时停止循环
until [ $i -ge 10 ]
do
    echo "当前i的值: $i"  # 输出当前i的值
    ((i++))  # i自增
done

代码拆解

  • 初始化变量i=0 初始化变量i为0。
  • 循环条件until [ $i -ge 10 ] 使用until循环,当i不小于10时停止循环。这里使用了-ge(greater than or equal to)运算符来比较i和10。
  • 循环体
    • echo "当前i的值: $i":输出当前i的值。
    • ((i++)):使用算术扩展(arithmetic expansion)来将i的值自增1。

case语句

代码示例

read -p "请输入一个数值: " num
case $num in
    1)
        echo "输入的是1"
        ;;
    2)
        echo "输入的是2"
        ;;
    *)
        echo "输入的是其他数字"
        ;;
esac

代码功能

  • 读取用户输入read -p "请输入一个数值: " num 使用read命令读取用户输入的数值,并将其存储在变量num中。
  • case语句
    • case $num in:根据变量num的值进行模式匹配。
    • 1)2):当num的值为1或2时,分别输出对应的消息。
    • *):当num的值不匹配任何前面的模式时,输出“输入的是其他数字”。注意,这里的右括号)后不应有空格。

函数

代码示例

# 定义一个名为DemoFunc的函数,用于输出Hello World!
DemoFunc(){
    echo "Hello World !"
}

# 调用DemoFunc函数,执行输出操作
DemoFunc

代码功能与优化说明

  • 函数定义
    • DemoFunc(){ ... }:定义了一个名为DemoFunc的函数。
    • echo "Hello World !":函数体中的唯一一条语句,用于输出“Hello World!”。
  • 函数调用DemoFunc 调用前面定义的DemoFunc函数,执行输出操作。

额外说明

  • 在实际脚本编写中,函数通常用于封装重复使用的代码块,提高代码的可维护性和可读性。
  • 可以通过向函数传递参数来使其更加灵活和通用。例如,可以定义一个函数来输出任意字符串,而不是固定的“Hello World!”。
  • 在编写复杂的脚本时,合理使用函数可以使代码结构更加清晰,便于调试和维护。

带有传参的函数

计算两个数的和

# 定义一个名为calculate_sum的函数,接收两个参数并计算和
calculate_sum() {
    local num1=$1
    local num2=$2
    local sum=$((num1 + num2))
    echo "The sum of $num1 and $num2 is: $sum"
}

# 调用函数并传递参数
calculate_sum 5 10

在这个示例中,calculate_sum函数接收两个参数$1$2,分别代表要相加的两个数。函数内部使用local关键字声明局部变量(虽然在这个简单示例中不是必须的,但在更复杂的函数中有助于避免变量名冲突)。然后,使用算术扩展$((...))来计算两个数的和,并输出结果。


http://www.kler.cn/a/405539.html

相关文章:

  • 飞凌嵌入式T113-i开发板RISC-V核的实时应用方案
  • MongoDB 更新集合名
  • el-table最大高度无法滚动
  • 【功能实现】bilibili顶部鼠标跟随效果怎么实现?
  • InstantStyle容器构建指南
  • Perl 简介
  • 演讲回顾丨杭州悦数 CTO 叶小萌:图数据库发展新航向——拥抱 GQL,融合 HTAP,携手 AI
  • git config 指令详解
  • C#开发基础之借用dotnet CLI命令行参数的设计了解命令行构建用法
  • Android 在Android.bp或Android.mk文件移除原生内置应用
  • 服务器数据恢复—raid5阵列热备盘上线失败导致EXT3文件系统不可用的数据恢复案例
  • Lumerical脚本——创建基本结构
  • comprehension
  • python文件对象方法
  • @PermitAll注解和@PreAuthorize注解
  • Next.js 开发教程(三):CSS 样式的完整指南
  • VLAN资源池(Java Python JS C++ C )
  • 如何在 React 项目中应用 TypeScript?应该注意那些点?结合实际项目示例及代码进行讲解!
  • 已解决centos7 yum报错:cannot find a valid baseurl for repo:base/7/x86_64的解决方案
  • 【c++笔试强训】(第十六篇)
  • JAVA八股与代码实践----接口与抽象类的区别和用法
  • 利用KDJ指标显示多空K线(附带源码)
  • Unity3D 客户端网络角色的操作与行为分离设计详解
  • 一文详解kafka知识点
  • LayaAir引擎荣获开源大赛一等奖
  • Linux下pwm开发与框架源码分析