Shell脚本小练习

embedded/2024/12/3 7:44:21/
cle class="baidu_pl">
cle_content" class="article_content clearfix">
content_views" class="htmledit_views">

学习了这么长时间Shell脚本࿰c;总得来一次小小的练习吧࿰c;那么请看下文!

1.用Shell写一个小计算器。

通过<code>readcode>命令获取用户输入的表达式࿰c;表达式的格式设定为<code>操作数1 运算符 操作数2code>࿰c;例如<code>5+3code>࿰c;然后利用设计的脚本输出运算结果。

要求:实现加、减、乘、除运算

<code>#!/bin/bash
echo "请输入表达式(格式:操作数1 运算符 操作数2࿰c;例如 5 + 3):"
read expr
result=$(echo "$expr" | bc)
echo "运算结果是:$result"
code>

center;">输出:c="https://i-blog.csdnimg.cn/direct/a9d8530f0c3c46c8850d47a4f673e141.png" />

ckquote>
  • <code>#!/bin/bashcode> 表示使用 Bash 解释器来运行该脚本。

  • **<code>read exprcode>**:读取用户输入的数学表达式࿰c;并将其存储到变量 <code>exprcode> 中。

  • **<code>result=$(echo "$expr" | bc)code>**:将用户输入的表达式 <code>$exprcode> 通过管道传递给 <code>bccode> 工具࿰c;计算结果并存储在 <code>resultcode> 变量中。

  • **<code>echo "运算结果是:$result"code>**:输出运算结果。

ckquote>

2.用Shell定义一个求n的阶乘函数

定义一个计算n的阶乘的函数(含参函数、if判断、for循环)

写一个脚本去调用在(三、封装函数)中写的求阶乘的函数࿰c;并定义一个变量n可用read交互输入࿰c;最终输出n的阶乘

结果:

<code>#!/bin/bashecho "请输入一个数字:"
read num
echo "您输入的数字是:$num"# 计算阶乘
result=1
for i in $(seq 1 $num); 
doresult=$((result * i))
done
echo "$num 的阶乘是:$result"code>

center;">输出:c="https://i-blog.csdnimg.cn/direct/bdb0999741e34eb0b6889c48595a82a2.png" />

ckquote>
  • <code>read numcode>:<code>readcode> 命令用于从标准输入读取数据࿰c;将输入的内容存储到变量 <code>numcode> 中。在这个脚本中࿰c;用户会输入一个数字࿰c;<code>readcode> 命令把它保存在 <code>numcode> 变量里。

  • 使用seq命令生成从1到$num的序列。用for循环进行遍历每个数字࿰c;每次循环时࿰c;会将result与当前的i相乘࿰c;逐步计算阶乘

ckquote>

3.拓展:

  • 写一个Shell脚本去筛选出eth0网卡的ipv4地址࿰c;并赋值一个变量输出(可以去了解grep、awk文本处理工具)

结果:

<code>#!/bin/bash
# 获取 eth0 网卡的 IPv4 地址
ip_address=$(ifconfig eth0 | grep 'inet ' | awk '{print $2}')
# 输出结果
echo "eth0 网卡的 IPv4 地址是:$ip_address"
code>

center;">输出:c="https://i-blog.csdnimg.cn/direct/cb53da7412a34ec39462e7a06c5e2bd6.png" />

center;">


http://www.ppmy.cn/embedded/142543.html

相关文章

linux查询进程的启动时间

说到查询进程的启动时间&#xff0c;你的第一反应肯定是ps -p $pid -o lstart&#xff0c;但是ps 命令通常会通过访问 proc 文件系统来收集进程的信息&#xff0c;它本身是一个外部命令&#xff0c;执行时需要进行进程管理、格式化输出等额外的操作&#xff0c;这会消耗更多的 …

MATLAB 手写判断点在多边形内外的2种方法(87)

MATLAB 手写判断点在多边形内外-方法1(87) 一、算法介绍二、算法实现1.方法1(代码+测试)2.方法2(代码+测试)三、结果一、算法介绍 手动实现两种方法,判断点在多边形的内部还是外部, 具体实现和测试代码如下,使用前请自行验证。(代码复制粘贴即可使用) 二、算法实现…

设计模式- Java

工厂模式 通过将对象的创建过程封装到一个工厂类中&#xff0c;使得客户端不需要直接使用 new 去创建对象&#xff0c;而是通过调用工厂方法来获取所需的对象。这样可以降低代码耦合度&#xff0c;并方便后续的扩展和维护。 示例代码 简单工厂模式&#xff08;不配合策略模式…

三格电子—单通道串口服务器

型号&#xff1a;SG-TCP232-110 一、产品介绍 1.1 功能简介 SG-TCP232-110 是一款用来进行串口数据和网口数据转换的设备。解决普通 串口设备在 Internet 上的联网问题。 设备的串口部分提供一个 232 接口和一个 485 接口&#xff0c;两个接口内部连接&#xff0c;…

阿里邮箱发送带excel附件邮件

导包 <dependency><groupId>javax.mail</groupId><artifactId>mail</artifactId><version>1.4.7</version> </dependency> 内容 调用 EmilUtil.sendEmail("xxxx163.com",host,username,password,port,excelFile,…

axios的认识与基本使用

axios简介 Axios 是一个基于 promise 网络请求库&#xff0c;作用于node.js 和浏览器中。 它是 isomorphic 的(即同一套代码可以运行在浏览器和node.js中)。在服务端它使用原生 node.js http 模块, 而在客户端 (浏览端) 则使用 XMLHttpRequests。 主要特点 从浏览器创建 XML…

DOCKER学习总结

这里写目录标题 一、Docker安装1.1 在线安装1.2 离线安装安装配置启动服务 1.3 配置镜像1.4 Docker启动相关命令 二、Docker三大核心概念2.1 镜像2.2 容器2.3 仓库2.3.1 公有仓库2.3.2 私有仓库 二、容器与虚拟机比较 一、Docker安装 1.1 在线安装 查看是否安装dockeryum lis…

【Robocasa】Code Review

文章目录 OverviewalgoInitializationImportant Class MethodsTrain LoopTest Time ConfigsdemoConfig FactoryConfig StructureConfig Locking默认锁定状态配置修改的上下文管理器 dataset示例数据集对象参数说明 model基础模块EncoderCoreVisualCoreScanCore随机化器 (Random…