Shell脚本小练习

server/2024/12/3 3:59:22/
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/server/146921.html

相关文章

unity中控制相机跟随物体移动

unity中控制相机跟随物体移动 Main Camera下添加组件&#xff08;follow target&#xff09; 脚本中定义 public Transform trans;将transform拖拽到trans中&#xff0c;让trans可以引用到transform数值&#xff08;方式1&#xff09; 因为属于当前GameObject下的脚本组件…

分布式锁的实现原理

作者&#xff1a;来自 vivo 互联网服务器团队- Xu Yaoming 介绍分布式锁的实现原理。 一、分布式锁概述 分布式锁&#xff0c;顾名思义&#xff0c;就是在分布式环境下使用的锁。众所周知&#xff0c;在并发编程中&#xff0c;我们经常需要借助并发控制工具&#xff0c;如 mu…

缓存使用规范学习

1.规范 size控制: string类型&#xff0c;控制在2KB以内 hash、list、set、zset类型的元素个数&#xff0c;不要超过5000 pipeline命令: 检查多参数命令的参数个数或pipeline命令个数&#xff0c;若值太大&#xff0c;建议减小&#xff08;codis proxy返回结果集超64K&…

为什么ai会用python开发

AI领域使用Python开发有几个主要原因&#xff1a; 简洁易读&#xff1a;Python语法简洁&#xff0c;容易理解&#xff0c;使得开发者能够专注于算法和模型的设计&#xff0c;而不是花费大量时间在语言本身的细节上。这对于快速开发和原型设计尤为重要。 强大的库支持&#xff…

Flink四大基石之CheckPoint

1、State Vs Checkpoint State:状态,是Flink中某一个Operator在某一个时刻的状态,如maxBy/sum,注意State存的是历史数据/状态,存在内存中。 Checkpoint:快照点, 是Flink中所有有状态的Operator在某一个时刻的State快照信息/存档信息。 一句话概括: Checkpoint就是State的快照…

reactivex.Observable 超时问题

下面代码测试可知&#xff1a;超时设置需要在map之后才有效&#xff0c;换句话说就是&#xff0c;超时只对超时设置之前的代码有用 import io.reactivex.Observable; import java.util.concurrent.TimeUnit;public class TimeoutTest {public static void main(String[] args…

Fortran mpi在Linux的安装

最近编译一个程序需要需要 Fortran mpi 编译器&#xff0c;则需要安装 Fortran编辑器和MPI库&#xff0c;以下是具体的安装步骤&#xff1a; 一、安装 Fortran 编译器&#xff08;gfortran&#xff09; 在conda环境中安装&#xff1a; conda install -c conda-forge gfortra…

Python脚本:自动化下载视频的日志记录

在数字化时代&#xff0c;视频内容的获取和处理变得日益重要。无论是为了内容备份、离线观看还是数据分析&#xff0c;自动化下载视频成为了一个常见需求。然而&#xff0c;自动化过程中的监控和问题追踪同样重要&#xff0c;这就需要有效的日志记录系统。本文将介绍如何在Pyth…