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

【Linux实践】实验九:Shell流程控制语句

【Linux实践】实验九:Shell流程控制语句

  • 实验目的
  • 实验内容
  • 实验步骤及结果
    • 1. 变量的定义和使用
    • 2. 条件
    • 3. 运算
    • 4. if 语句
    • 5. case 语句
    • 6. for 语句
    • 7. while 语句
    • 8. until 语句
    • 9. 遍历复制
    • 10. 计算平方

实验目的

1、掌握条件判断语句,如if语句、case语句。
2、掌握循环控制语句,如for语句、while语句、until语句。

实验内容

1、编写一个Shell脚本,利用for循环把当前目录下的所有*.c文件复制到指定的目录中,并显示复制后该目录内按文件大小排序的目录文件清单。
2、使用until语句创建一个Shell程序,其功能为计算1-10的平方。

实验步骤及结果

1. 变量的定义和使用

  • 定义变量:变量名=值
  • 使用变量:$变量名
  • 只读变量:readonly 变量名
  • 删除变量:unset 变量名

2. 条件

  • 条件可以通过直接调用 test 命令或使用方括号 [ ] 来编写,如果用[ ] 必须注意要有空格。
  • 下面两个条件语句的结果是一样的
    • if test $AM -gt 150
    • if [ $AM -gt 150 ]

3. 运算

  • $(( ... )) 是一种用于进行算术运算的语法,但仅支持整数运算。

    • 加法:sum=$((a + b))
    • 自增加1:count=$((count + 1))
    • 另外一种自增写法:((count++))
  • 如果需要浮点运算,可以使用 bc 或其他工具。

  • expr 也是一个用于计算表达式的命令行工具,可以进行整数运算、字符串操作等。

    • 自增加1:count=$(expr $count + 1)

    • 计算字符串长度:expr length "Hello"

4. if 语句

  • 基本语法

    if [ 条件 ]; then# 条件为真时执行的代码
    fi
    
  • 双分支

    if [ 条件 ]; then# 条件为真时执行的代码
    else# 条件为假时执行的代码
    fi
    
  • 多分支

    if [ 条件 ]; then# 条件为真时执行的代码
    elif [ 其他条件 ]; then# 其他条件为真时执行的代码
    else# 所有条件都不满足时执行的代码
    fi
    

5. case 语句

  • case 语句用于多重选择的一种控制结构,类似于其他编程语言中的 switch 语句。
case 变量名 in匹配1)# 命令1;;匹配2)# 命令2;;*)# 默认命令(default);;
esac

6. for 语句

  • for 语句用于重复执行一组命令,通常根据指定的列表或范围迭代。

  • 基于列表的循环:

    for 变量名 in 列表; do# 命令
    done
    
  • 基于范围的循环:

    for ((i=0; i<3; i++)); do# 命令
    done
    

7. while 语句

  • 和其他语言一样,在给定条件为真时重复执行。
    while [ 条件 ]; do# 命令
    done
    

8. until 语句

  • until 语句用于在条件为假时持续执行某些命令。它的基本结构与 while 循环类似,但逻辑相反。

    until [ 条件 ]; do# 当条件为假时执行的代码
    done
    

9. 遍历复制

  • 准备工作:在桌面创建目录1和目录2,在目录1中新建1.c,2.c,3.c
    在这里插入图片描述

  • 在目录1下新建一个shell脚本 autocp
    在这里插入图片描述

  • 编写程序,利用for循环把目录1下的所有 *.c 文件复制到目录2中,显示复制后该目录内按文件大小排序的目录文件清单。
    在这里插入图片描述

  • 执行程序
    在这里插入图片描述

10. 计算平方

  • 准备工作:在桌面创建一个 autoCal 文件
    在这里插入图片描述

  • 使用until语句计算1-10的平方
    在这里插入图片描述

  • 执行程序
    在这里插入图片描述


http://www.mrgr.cn/news/37144.html

相关文章:

  • 实战篇 | VUE3 的安装使用并跑通第一个项目(高效实操版)
  • 【NLP】LSTM结构,原理,代码实现,序列池化
  • SQL_create_view
  • 解释一下Java中的多线程。如何创建一个新的线程?
  • 力扣随机一题——所有元音按顺序排序的最长字符串
  • SRE的必修课:学会看账单
  • LeetCode(Python)-贪心算法
  • STL之vector篇(下)(手撕底层代码,从零实现vector的常用指令,深度剖析并优化其核心代码)
  • c++292类模板
  • 828华为云征文|Flexus云服务器X实例实践:安装SimpleMindMap思维导图工具
  • 【刷题日记】最大不重叠区间的数量 leetcode 435
  • Dockerfile如何使用
  • 【如何学习Python编程?】
  • USB 3.1 Micro-A 与 Micro-B 插头,Micro-AB 与 Micro-B 插座,及其引脚定义
  • 一窥AI大模型奥秘:技术前沿与产业应用双轮驱动
  • Studying-图论包含的算法总结
  • 【VUE】axios组件
  • 绝了,自从用了它,我每天能多摸鱼2小时!
  • 滑动窗口 -- 限制窗口内某元素的数量/种类
  • 深度学习—神经网络基本概念