首页 > 系统相关 >shell编程(完结)

shell编程(完结)

时间:2024-12-12 23:56:49浏览次数:6  
标签:shell num1 num2 read 编程 echo 完结 输入 数字

shell编程(完结)

声明!

学习视频来自B站up主 泷羽sec有兴趣的师傅可以关注一下,如涉及侵权马上删除文章

笔记只是方便各位师傅的学习和探讨,文章所提到的网站以及内容,只做学习交流,其他均与本人以及泷羽sec团队无关,切勿触碰法律底线,否则后果自负!!!!

有兴趣的小伙伴可以点击下面连接进入b站主页​**B站泷羽sec**

1、不同脚本的互相调用

先给1.sh写入以下代码

#/bin/bash
source 2.sh
echo "My name is $name,and i am $age years old."

再为2.sh写入以下代码

name="fengyijiu"
age=18

然后执行1.sh,就会输出

在这里插入图片描述

2、重定向

如果我们使用ls > 1.txt,则会执行ls命令,并将查到的信息重定向到1.txt文件中。

但是这种重定向会覆盖掉1.txt文件原本的内容,如果我们需要将数据追加至1.txt文件,而不是覆盖,则使用>>来实现,具体例子如下:

在这里插入图片描述

/dev/null是一个特殊的文件,被称为“空设备”或“空设备文件”。这个文件会丢弃所有写入到它的数据,就好像一个黑洞一样。当你读取/dev/null时,它立即返回一个文件结束(EOF)标记。
在命令行操作中,/dev/null常常被用来丢弃不需要的输出。例如,如果你运行一个命令,但是并不关心这个命令的输出,你就可以将输出重定向到/dev/null,这样命令的输出就会被丢弃,不会显示在终端或者写入到其他文件。

我们在1.sh中写入以下命令

#/bin/bash

touch 2.txt
echo "hello world!" > 2.txt

# 创建一个2.txt文件,并将"hello world!"写入到2.txt文件中

然后我们执行一下1.sh,我们可以发现脚本执行了,但是没有任何回显

在这里插入图片描述

文件描述符

0:标准输入

1:标准输出

2:错误输出

在这里插入图片描述

当我们需要将执行成功的输出存放到一个文件,将执行失败的输出存放到另一个文件中,我们可以利用文件描述符来进行该操作,使得我们能够准确获取需要的信息,比如报错信息能让我们准确的定位到出现的问题上。

制作一个计算器

通过之前的shell脚本学习,我们可以做出一个简易的计算器

#!/bin/bash

# 显示菜单
echo "选择操作:"
echo "1. 加法"
echo "2. 减法"
echo "3. 乘法"
echo "4. 除法"
echo "5. 退出"

# 读取用户选择
read -p "输入选择(1/2/3/4/5):" option

case $option in
1) echo "输入第一个数字:"
   read num1
   echo "输入第二个数字:"
   read num2
   echo "结果是:$((num1 + num2))"
   ;;
2) echo "输入第一个数字:"
   read num1
   echo "输入第二个数字:"
   read num2
   echo "结果是:$((num1 - num2))"
   ;;
3) echo "输入第一个数字:"
   read num1
   echo "输入第二个数字:"
   read num2
   echo "结果是:$((num1 * num2))"
   ;;
4) echo "输入第一个数字:"
   read num1
   echo "输入第二个数字:"
   read num2
   if [ $num2 -eq 0 ]; then
      echo "除数不能为0。"
   else
      echo "结果是:$((num1 / num2))"
   fi
   ;;
5) echo "退出程序。"
   exit 0
   ;;
*) echo "非法输入。"
   ;;
esac

在这里插入图片描述

但是这种写法有个小缺陷,就是不能输入非整数,否则会报错

在这里插入图片描述

如果要解决无法输入小数的问题,需要安装bc工具

sudo apt-get update
sudo apt-get install bc

安装之后,可以借助该工具来实现小数的加减乘除

#!/bin/bash

# 显示菜单
echo "选择操作:"
echo "1. 加法"
echo "2. 减法"
echo "3. 乘法"
echo "4. 除法"
echo "5. 退出"

# 读取用户选择
read -p "输入选择(1/2/3/4/5):" option

case $option in
1) echo "输入第一个数字:"
   read num1
   echo "输入第二个数字:"
   read num2
   echo "结果是:$(awk "BEGIN {print $num1 + $num2}")"
   ;;
2) echo "输入第一个数字:"
   read num1
   echo "输入第二个数字:"
   read num2
   echo "结果是:$(awk "BEGIN {print $num1 - $num2}")"
   ;;
3) echo "输入第一个数字:"
   read num1
   echo "输入第二个数字:"
   read num2
   echo "结果是:$(awk "BEGIN {print $num1 * $num2}")"
   ;;
4) echo "输入第一个数字:"
   read num1
   echo "输入第二个数字:"
   read num2
   if [ $num2 -eq 0 ]; then
      echo "除数不能为0。"
   else
      echo "结果是:$(awk "BEGIN {print $num1 / $num2}")"
   fi
   ;;
5) echo "退出程序。"
   exit 0
   ;;
*) echo "非法输入。"
   ;;
esac

在这里插入图片描述

标签:shell,num1,num2,read,编程,echo,完结,输入,数字
From: https://blog.csdn.net/weixin_44030810/article/details/144438992

相关文章

  • Shell浅浅谈(七)echo 命令使用指南
    echo是一个非常常见的Shell命令,用于将输出显示到终端,也可以将输出定向到文件。它支持多种输出格式化选项,如换行、不换行、转义字符处理等,以下是对其常用功能的阐述:1.显示普通字符串默认情况下,echo用于输出一个普通字符串。可以使用双引号或单引号来括起来字符串。示......
  • 转载:【AI系统】Ascend C 编程范式
    AI的发展日新月异,AI系统相关软件的更新迭代也是应接不暇,作为一篇讲授理论的文章,我们将尽可能地讨论编程范式背后的原理和思考,而少体现代码实现,以期让读者理解AscendC为何这样设计,进而随时轻松理解最新的AscendC算子的编写思路。本文将针对AscendC的编程范式进行详细讲......
  • 转载:【AI系统】算子开发编程语言 Ascend C
    本文将深入探讨昇腾算子开发编程语言AscendC,这是一种专为昇腾AI处理器算子开发设计的编程语言,它原生支持C和C++标准规范,最大化匹配用户的开发习惯。AscendC通过多层接口抽象、自动并行计算、孪生调试等关键技术,极大提高算子开发效率,助力AI开发者低成本完成算子开发和模......
  • win11家庭版使用Windows PowerShell来安装wsl输入命令wsl --install报错 :无法启动服务
    本人不是技术员,只是个小白,只能说久病成医,至于写下这篇文章纯属怕自己以后忘记,给自己一个备份提醒,若有错误的地方,欢迎各位大佬指错第一步:控制面板--程序--卸载程序---左键这个界面左侧的“启用或关闭Windows功能”---勾选红箭头三样---确定---重启电脑     -------......
  • Python学习笔记 - 探索函数式编程常用方法
    函数式编程是Python编程中一种高度抽象的编程范式,以函数为中心,通过不变的数据结构和纯函数来构建程序。函数式编程的核心思想在于“无副作用”和“数据不可变性”,这样的编程方式能提高代码的可读性和可维护性,减少错误的发生,特别适合用于处理复杂的数据操作、并行计算和数据......
  • 在 Windows 中,您可以通过 CMD 或 PowerShell 实现对 Windows Media Player 播放列表的
    在Windows中,您可以通过CMD或PowerShell实现对WindowsMediaPlayer播放列表的管理和操作。不过,直接通过这些命令行工具来创建媒体库播放列表、媒体流等功能是有一定局限的,因为WindowsMediaPlayer并没有直接的命令行接口来创建播放列表。尽管如此,我们可以使用一些间接......
  • 在 PowerShell 中实现您要求的多个网络修复功能,可以通过运行多个脚本和命令来完成。这
    ResetInternetProtocols(TCP/IP)RepairWinsock(ResetCatalog)RenewInternetConnectionsFlushDNSResolverCache(DomainNameSystem)FlushARPCache(AddressResolutionProtocol)RepairInternetExplorer11ClearWindowsUpdateHistoryRepairWindows/Automat......
  • JUC 多线程并发编程
    一、基本概念1.进程与线程进程(Process):计算机中正在运行的程序的实例,是操作系统分配资源的基本单位。每个进程拥有自己的内存空间、文件描述符、数据栈等。线程(Thread):进程中的一个执行单元。一个进程中至少有一个线程,通常称为主线程。线程是CPU调度和执行的最小单位。......
  • 从 Java 到 Scala:编程世界的相似与不同
    引言Java和Scala同为JVM(Java虚拟机)语言,它们可以无缝地运行在同一个平台上,并共享大量的工具和库。Java是一门成熟的面向对象语言,Scala则是将函数式编程与面向对象编程有机结合的现代编程语言。Scala的设计目标是解决Java中的一些冗余和限制,同时为开发者提供更加简......
  • Shell脚本基础语法教程
    提示:该文章由我上一个CSDN【梦想拯救世界】拿过来的,上一个号已注销,若有小伙伴们收藏过此文章,应该会看不到了。目录前言一、Shell变量(一)定义(二)变量定义规则(三)变量的定义方式1.基本方式2.命令结果赋值给变量3.交互式定义变量4.定义有类型的变量(四)变量的分类1、本地变......