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

shell编程(完结)

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/bashtouch 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):" optioncase $option in
1) echo "输入第一个数字:"read num1echo "输入第二个数字:"read num2echo "结果是:$((num1 + num2))";;
2) echo "输入第一个数字:"read num1echo "输入第二个数字:"read num2echo "结果是:$((num1 - num2))";;
3) echo "输入第一个数字:"read num1echo "输入第二个数字:"read num2echo "结果是:$((num1 * num2))";;
4) echo "输入第一个数字:"read num1echo "输入第二个数字:"read num2if [ $num2 -eq 0 ]; thenecho "除数不能为0。"elseecho "结果是:$((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):" optioncase $option in
1) echo "输入第一个数字:"read num1echo "输入第二个数字:"read num2echo "结果是:$(awk "BEGIN {print $num1 + $num2}")";;
2) echo "输入第一个数字:"read num1echo "输入第二个数字:"read num2echo "结果是:$(awk "BEGIN {print $num1 - $num2}")";;
3) echo "输入第一个数字:"read num1echo "输入第二个数字:"read num2echo "结果是:$(awk "BEGIN {print $num1 * $num2}")";;
4) echo "输入第一个数字:"read num1echo "输入第二个数字:"read num2if [ $num2 -eq 0 ]; thenecho "除数不能为0。"elseecho "结果是:$(awk "BEGIN {print $num1 / $num2}")"fi;;
5) echo "退出程序。"exit 0;;
*) echo "非法输入。";;
esac

在这里插入图片描述

相关文章:

shell编程(完结)

shell编程(完结) 声明! 学习视频来自B站up主 ​泷羽sec​​ 有兴趣的师傅可以关注一下,如涉及侵权马上删除文章 笔记只是方便各位师傅的学习和探讨,文章所提到的网站以及内容,只做学习交流,其…...

UNIX数据恢复—UNIX系统常见故障问题和数据恢复方案

UNIX系统常见故障表现: 1、存储结构出错; 2、数据删除; 3、文件系统格式化; 4、其他原因数据丢失。 UNIX系统常见故障解决方案: 1、检测UNIX系统故障涉及的设备是否存在硬件故障,如果存在硬件故障&#xf…...

adb连接逍遥安卓模拟器失败的问题解决方案

1、逍遥安卓模拟器进入系统应用,设置-关于平板电脑-版本号,连续点击3次以上,直到提示进入开发者模式,返回设置界面,进入【开发者选项】-【USB调试】开启,之后重启模拟器再次adb尝试连接。 2、android stud…...

【昇腾】NPU ID:物理ID、逻辑ID、芯片映射关系

起因: https://www.hiascend.com/document/detail/zh/Atlas%20200I%20A2/23.0.0/re/npu/npusmi_013.html npu-smi info -l查询所有NPU设备: [naienotebook-npu-bd130045-55bbffd786-lr6t8 DCNN]$ npu-smi info -lTotal Count : 1NPU…...

Three.js曲线篇 8.管道漫游

目录 创建样条曲线 创建管道 透视相机漫游 完整代码 大家不要被这个“管道漫游”这几个字所蒙骗了,学完后大家就知道这个知识点有多脏了。我也是误入歧途,好奇了一下“管道漫游”。好了,现在就给大家展示一下为啥这个只是点脏了。 我也废话…...

scala基础_数据类型概览

Scala 数据类型 下表列出了 Scala 支持的数据类型: 类型类别数据类型描述Scala标准库中的实际类基本类型Byte8位有符号整数,数值范围为 -128 到 127scala.Byte基本类型Short16位有符号整数,数值范围为 -32768 到 32767scala.Short基本类型I…...

【LeetCode刷题之路】622.设计循环队列

LeetCode刷题记录 🌐 我的博客主页:iiiiiankor🎯 如果你觉得我的内容对你有帮助,不妨点个赞👍、留个评论✍,或者收藏⭐,让我们一起进步!📝 专栏系列:LeetCode…...

暂停一下,给Next.js项目配置一下ESLint(Next+tailwind项目)

前提 之前开自己的GitHub项目,想着不是团队项目,偷懒没有配置eslint,后面发现还是不行。eslint的存在可以帮助我们规范代码格式,同时 ctrl s保存立即调整代码格式是真的很爽。 除此之外,团队使用eslint也是好处颇多…...

Windows系统磁盘与分区之详解(Detailed Explanation of Windows System Disks and Partitions)

Windows系统磁盘与分区知识详解 在日常使用Windows操作系统的过程中,我们常常会接触到磁盘管理,磁盘分区等操作.然而,许多人可能并不完全理解磁盘和分区的运作原理以及如何高效管理它们. 本篇文章将探讨Windows系统中关于磁盘和分区的各种知识,帮助大家更好地理解磁盘以及分区…...

顺序表的使用,对数据的增删改查

主函数: 3.c #include "3.h"//头文件调用 SqlListptr sql_cerate()//创建顺序表函数 {SqlListptr ptr(SqlListptr)malloc(sizeof(SqlList));//在堆区申请连续的空间if(NULLptr){printf("创建失败\n");return NULL;//如果没有申请成功&#xff…...

XDMA与FPGA:高效数据传输的艺术

XDMA与FPGA:高效数据传输的艺术 引言 在现代计算系统中,数据传输的效率直接影响系统的整体性能。特别是在涉及到高速数据处理的领域,如高性能计算(HPC)、实时视频处理和大数据分析等,如何高效地在主机与F…...

#思科模拟器通过服务配置保障无线网络安全Radius

演示拓扑图: 搭建拓扑时要注意: 只能连接它的Ethernet接口,不然会不通 MAC地址绑定 要求 :通过配置MAC地址过滤禁止非内部员工连接WiFi 打开无线路由器GUI界面,点开下图页面,配置路由器无线网络MAC地址过…...

浅谈Python库之pillow

一、pillow的介绍 Pillow是Python Imaging Library (PIL) 的一个分支,它是一个强大的图像处理库,用于打开、操作和保存许多不同图像文件格式。Pillow提供了广泛的文件格式支持、强大的图像处理能力和广泛的文件格式兼容性。它是PIL的一个友好的分支&…...

Android通过okhttp下载文件(本文案例 下载mp4到本地,并更新到相册)

使用步骤分为两步 第一步导入 okhttp3 依赖 第二步调用本文提供的 utils 第一步这里不做说明了,直接提供第二步复制即用 DownloadUtil 中 download 为下载文件 参数说明 这里主要看你把 destFileName 下载文件名称定义为什么后缀,比如我定义为 .mp4 下…...

计算机网络从诞生之初到至今的发展历程

前言 "上网",相信大家对这个动词已经不再陌生,网 通常指的是网络;在 2024 年的今天,网络已经渗透到了每个人的生活中,成为其不可或缺的一部分;你此时此刻在看到我的博客,就是通过网络…...

Kudu 源码编译-aarch架构 1.17.1版本

跟着官方文档编译 第一个问题:在make阶段时会报的问题: kudu/src/kudu/util/block_bloom_filter.cc:210:3: error: ‘vst1q_u32_x2’ was not declared in this scope kudu/src/kudu/util/block_bloom_filter.cc:436:5: error: ‘vst1q_u8_x2’ was no…...

SEC_ASA 第二天作业

拓扑 按照拓扑图配置 NTP,Server端为 Outside路由器,Client端为 ASA,两个设备的 NTP传输使用MD5做校验。(安全 V4 LAB考点) 提示:Outside路由器作为 Server端要配置好正确的时间和时区,ASA防…...

操作系统(5)进程

一、定义与特点 定义:进程是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。 特点: 动态性:进程是动态创建的,有它自身的生命周期,…...

6_Sass 选择器函数 --[CSS预处理]

Sass 提供了一系列的选择器函数,用于操作和组合CSS选择器。这些函数可以帮助你更灵活地创建样式规则,并且可以减少重复代码。以下是几个常用的选择器函数及其用法: 1. selector-append($selector1, $selector2...) selector-append($select…...

考研数学【线性代数基础box(数二)】

本文是对数学二线性代数基础进行总结,一些及极其简单的被省略了,代数的概念稀碎,不如高数关联性高,所以本文仅供参考,做题请从中筛选! 本文为初稿,后面会根据刷题和自己的理解继续更新 第一章…...

ModbusTcp获取数据

ModbusTcp获取数据 记录一个用 pymodbus 库来获取数据的代码。 注意: 1.读取寄存器地址是16进制的。2.大小端转换通过代码知道原理。读取数据时,切记频率别太高,否则会出现连接被关闭问题。 from pymodbus.client.sync import ModbusTcpCli…...

java 知识点:注解及使用

注解 大多数时候,我们会使用注解,而不是自定义注解。注解给谁用?编译器 、给解析程序用注解不是程序的一部分,可以理解为注解就是一个标签 主要的作用有以下四方面: 生成文档,通过代码里标识的元数据生成…...

AI预测体彩排3采取888=3策略+和值012路+胆码+通杀1码测试12月13日升级新模型预测第156弹

经过100多期的测试,当然有很多彩友也一直在观察我每天发的预测结果,得到了一个非常有价值的信息,那就是9码定位的命中率非常高,已到达90%的命中率,这给喜欢打私菜的朋友提供了极高价值的预测结果~当然了,大…...

faiss数据库检索不稳定

faiss数据检索不稳定 def build_faiss_index(embeddings_vector):dim np.shape(embeddings_vector)[-1]index faiss.index_factory(dim, HNSW64, faiss.METRIC_INNER_PRODUCT)index.add(embeddings_vector)return index这个代码不稳定,构建的索引召回结果可能会不…...

Vue技术中参数传递:Props与事件的实践指南

在Vue.js中,组件间的参数传递是构建动态和交互式应用的核心。本文将深入探讨如何通过Props和事件($emit)在Vue组件间进行参数传递,并提供代码示例。 Props传递数据 Props是Vue中组件间传递数据的一种方式,它允许父组…...

C++【基础】 ---- 快速入门 C++

文章目录 前言一、有关 const 区分二、有关命名空间三、有关输入和输出四、有关缺省参数四、函数重载总结 前言 本篇文章笔者将会对 C 这么语言中必须的基础部分进行简单讲解 , 同时也作为笔者自我复习使用, 这部分是初学C 的学者不可绕过的部分 , 希望学者认真理解 ,认真领会…...

Neo4j+Neovis+Vue3:前端连接数据库渲染

Neovis(github):https://github.com/neo4j-contrib/neovis.js Neovis配置文档:neovis.js (neo4j-contrib.github.io) 一、安装Neo4j 参考文章:neo4j下载安装配置步骤-CSDN博客 二、Neovis使用 1.npm引入 ?npm ins…...

React 18

文章目录 React 18自动批处理并发特性Suspense 组件增强新 HookscreateRoot API 替代 ReactDOM.renderStrict Mode严格模式服务器端渲染改进性能优化 React 18 React 18 引入了一系列新特性和改进,旨在提升性能、改善用户体验,并简化开发流程。以下是 R…...

Java:集合(List、Map、Set)

文章目录 1. Collection集合1-1. 迭代器遍历方式1-2. 通过for循环进行遍历1-3. forEach遍历 2. List集合2-1. ArrayList底层实现原理2-2. LinkedList底层实现原理 3. Set集合3-1. HashSet 底层实现3-2. LinkedHashSet 底层实现3-3. TreeSet 4. Collection集合->总结5. Map集…...

使用秘钥登录服务器

在我们测试或生产环境中,为了服务器安全性,有时可能需要以 SSH 密钥的方式登录服务器,接下来,将演示如何通过 SSH 私钥的方式来远程服务器。 一、远程服务器生成密钥对 1、首先在目标远程服务器下生成 SSH 密钥对 ssh-keygen然…...

大学生服务性网站建设方案/网页点击量统计

最近开始学习UGUI,但发现相比NGUI,UGUI的资料比较少,很多东西只能慢慢摸索,我参考了一下Unity官方出的Unity Samples UI例子,尝试完成UI拖拽功能。 1.首先模拟一个简单的物品拖拽的菜单: 2.然后在准备拖拽的…...

wordpress 添加js/网站怎么开发

Android官方文档中Supported Media Formats部分介绍了Android支持的多媒体格式,Android支持的图片格式如下图。 本文对这几种图片格式做个学习总结 JPEG JPEG(发音为jay-peg, IPA:[ˈdʒeɪpɛg])是一种针对照片视频而广泛使用的一…...

互联网建站网站/南京关键词seo公司

测试说明写2G文件,分批次写入,每批次写入128MB;分别在Win7系统(3G内存,双核,32位,T系列处理器)和MacOS系统(8G内存,四核,64位,i7系列处理器)下运行测试。理论上跟硬盘类型…...

初学者求教怎样做网站/网店如何推广

这是我个人的一点小想法啊&#xff0c;不代表准确 在c语言中我经常会使用到这样的用法&#xff1a; int main() {int i0,j0;for(i0,j10;i<5&&j>3;i,j--){printf("%d %d\n",i,j);}}//然后就会得到我想要的输出结果&#xff0c;如下&#xff1a; 0 10 …...

信用网站一体化建设方案/西安网络科技公司排名

CMMI研究所近期在官网上宣布&#xff0c;CMMI V2.0时代即将拉开帷幕&#xff0c;CMMI V2.0模型将在2018年正式发布&#xff01;1 CMMI V2.0 计划发布时间表摘要2 CMMI V2.0的改进点CMMI V2.0是基于当前CMMI客户和潜在用户的市场洞察力和需求&#xff0c;同时新增并优化了与用户…...

dw做的网站有域名么/聚名网官网

MyBatis源码解析(二)——动态代理实现函数调用 如果我们要使用MyBatis进行数据库操作的话&#xff0c;大致要做两件事情&#xff1a; 定义DAO接口 在DAO接口中定义需要进行的数据库操作。创建映射文件 当有了DAO接口后&#xff0c;还需要为该接口创建映射文件。映射文件中定…...