泷羽sec-shell (3)脚本参数传递与数学运算

news2025/1/8 4:49:56

   声明! 学习视频来自B站up主 **泷羽sec** 有兴趣的师傅可以关注一下,如涉及侵权马上删除文章,笔记只是方便各位师傅的学习和探讨,文章所提到的网站以及内容,只做学习交流,其他均与本人以及泷羽sec团队无关,切勿触碰法律底线,否则后果自负!!!!有兴趣的小伙伴可以点击下面连接进入b站主页[B站泷羽sec](泷羽sec的个人空间-泷羽sec个人主页-哔哩哔哩视频)

本章课程链接:shell (3)脚本参数传递与数学运算_哔哩哔哩_bilibili

脚本参数传递

1.基本概念

        在 Shell 脚本中,参数传递是一种将外部的值传递到脚本内部的机制。当执行一个 Shell 脚本时,可以在脚本名称后面跟上一些参数,这些参数可以在脚本内部被使用,就像函数的参数一样。

        在 Shell 脚本中,参数可以通过特殊的变量来访问。$0代表脚本本身的名称,$1代表传递给脚本的第一个参数,$2代表第二个参数,以此类推。$#表示传递给脚本的参数的个数。

例如,下面是一个简单的脚本5.sh:

echo "脚本名称是:$0"
echo "第一个参数是:$1"
echo "第二个参数是:$2"
echo "参数的个数是:$#"

当执行./5.sh hello world时,输出结果如下:

2.特殊参数处理

$*  会将所有的参数作为一个字符串传出,以空格分隔的字符串。

$0:脚本名称。
$#:传递给脚本的参数个数。
$@:与 $* 类似,但保留参数的分隔方式。
$$:当前脚本的进程 ID。
$?:上一个命令的返回值(退出状态)。
$_: 上一个命令的最后一个参数。
"$*":将所有参数视为一个整体,参数之间使用$IFS分隔。
"$@":将每个参数视为独立的个体。

例如6.sh:

echo "使用\$*获取所有参数:$*"

3.参数的移位操作

shift命令用于将参数向左移动。每次执行shift命令,$1的值会被丢弃,$2的值会变成$1,$3的值会变成$2,以此类推。
例如,下面的脚本7.sh:

echo "初始的第一个参数:$1"
shift
echo "移位后的第一个参数:$1"

当执行./7.sh arg1 arg2时,输出是:

4.使用参数进行条件判断和运算

可以根据传递的参数进行条件判断。例如,判断参数是否符合特定的格式或者范围。
下面是一个简单的脚本check_arg.sh,用于检查第一个参数是否是数字:

if [[ $1 =~ ^[0 - 9]+$ ]]; then
    echo "第一个参数是数字。"
else
    echo "第一个参数不是数字。"
fi

也可以对参数进行算术运算。例如,有一个脚本add_args.sh用于计算两个参数的和:

sum=$(($1 + $2))
echo "两个参数的和是:$sum"

向脚本传递参数:

echo 执行的文件名是: $0

echo 第一个参数是: $1

echo 传递的参数作为一个字符串显示: $*

echo 传递的参数独立作为每个字符串显示: $@

echo 传递到脚本的参数个数是: $#

echo 最后命令的退出状态: $?

echo 脚本运行的当前进程ID是: $$

可以向脚本程序传递一个或者多个参数 ,脚本中的$1.里面的数字是可以依次递增的,比如$1.$2,$3等等,其中的$0(比较特殊表示文件名称)

如:

shell的数学运算

基本算术运算
在 Shell 中可以进行基本的算术运算,如加法、减法、乘法和除法。常见的有两种方式,一种是使用expr命令,另一种是使用$(( ))或$( )(在某些情况下)结构。

使用expr命令

加法示例:
expr 2 + 3,在命令行中输入这个命令,会返回结果5。注意,expr命令中的运算符和操作数之间需要用空格隔开。

减法示例:
expr 5 - 2会返回3。
乘法示例:
乘法稍微有点复杂,因为在expr命令中,乘法运算符需要转义。例如,expr 3 \* 4会返回12。

取余运算(模运算)
取余运算可以得到除法运算的余数。使用expr命令

例如,expr 7 % 3会返回1,即 7 除以 3 的余数。

使用$(( ))结构
可以写成echo $((7 % 3)),同样会返回1。

除法示例:
expr 10 / 2会返回5。
使用$(( ))结构
这是一种更方便的算术运算方式。例如,echo $((2 + 3))会在终端输出5。它支持多种算术运算,并且不需要对运算符进行特殊处理(如乘法不需要转义)。减法可以这样写:echo $((7 - 4)),输出为3;乘法如echo $((3*4)),输出为12;除法如echo $((10/2)),输出为5。

加减法:

乘除法:

取余

混合运算(Shell会先乘除后加减)

如果想先加减后乘除可以使用括号,但是需要使用转义符\

如:

运算与变量结合

注意是反引号 [ ` ]  ——ESC键下方,1键左方

反引号与单引号的区别:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2250547.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

重塑视频新语言,让每一帧都焕发新生——Video-Retalking,开启数字人沉浸式交流新纪元!

模型简介 Video-Retalking 模型是一种基于深度学习的视频再谈话技术,它通过分析视频中的音频和图像信息,实现视频角色口型、表情乃至肢体动作的精准控制与合成。这一技术的实现依赖于强大的技术架构和核心算法,特别是生成对抗网络&#xff0…

Mybatis Plus 增删改查方法(一、增)

先定义一个简单的测试表,执行脚本如下: create table user(id bigint primary key auto_increment,name varchar(255) not null,age int not null default 0 check (age > 0) ); 根据Spingbootmybatisplus的结构根据表自行构建结构,大致…

依赖倒置原则:Java实践篇

在软件开发的世界里,设计原则如同指南针,指引着我们构建更加健壮、可维护和可扩展的系统。其中,依赖倒置原则(Dependency Inversion Principle,DIP)是面向对象设计(OOD)中的一个重要…

【MySQL】库和表的基本操作

目录 库 库的增删查改 字符集与校验集 库的备份与恢复 表 表的创建和删除 用不同的存储引擎创建表的区别 查看表 修改表 添加删除属性 修改改变属性 上篇博客我们讲了数据库的基本理解,对数据库有了一个大致的概念,下面我们来介绍一下库和表的…

大数据新视界 -- 大数据大厂之 Hive 函数库:丰富函数助力数据处理(上)(11/ 30)

💖💖💖亲爱的朋友们,热烈欢迎你们来到 青云交的博客!能与你们在此邂逅,我满心欢喜,深感无比荣幸。在这个瞬息万变的时代,我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…

03.ES7 04.ES8

3.1.Array.includes Includes 方法用来检测数组中是否包含某个元素&#xff0c;返回布尔类型值 <script>// includes const mingzhu [王二,张三,李四,王五];//判断console.log(mingzhu.includes(张三));//trueconsole.log(mingzhu.includes(周六));//false//indexOf …

中国科学院大学研究生学术英语读写教程 Unit7 Materials Science TextA 原文和翻译

中国科学院大学研究生学术英语读写教程 Unit7 Materials Science TextA 原文和翻译 Why Is the Story of Materials Really the Story of Civilisation? 为什么材料的故事实际上就是文明的故事&#xff1f; Mark Miodownik 1 Everything is made of something. Take away co…

下载安装Android Studio

&#xff08;一&#xff09;Android Studio下载地址 https://developer.android.google.cn/studio 滑动到 点击下载文档 打开新网页 切换到english ![](https://i-blog.csdnimg.cn/direct/b7052b434f9d4418b9d56c66cdd59fae.png 等待一会&#xff0c;出现 点同意后&#xff0…

【解决方案】pycharm出现 为项目选择的Python解释器无效

文章目录 1.问题重述2.解决方案END 1.问题重述 第二次启动项目的时候出现 2.解决方案 右下角点 先选无解释器&#xff0c;然后在用项目配置好的解释器&#xff0c;然后就好了&#xff0c;估计是第二次启动的时候没有识别到&#xff0c;UI的信号设置的问题 END

浏览器的数据六种存储方法比较 :LocalStorage vs. IndexedDB vs. Cookies vs. OPFS vs. WASM-SQLite

在构建该 Web 应用程序&#xff0c;并且希望将数据存储在用户浏览器中。也许您只需要存储一些小标志&#xff0c;或者甚至需要一个成熟的数据库。 我们构建的 Web 应用程序类型发生了显着变化。在网络发展的早期&#xff0c;我们提供静态 html 文件。然后我们提供动态渲染的 h…

linux一键部署apache脚本

分享一下自己制作的一键部署apache脚本&#xff1a; 脚本已和当前文章绑定&#xff0c;请移步下载&#xff08;免费&#xff01;免费&#xff01;免费&#xff01;&#xff09; &#xff08;单纯的分享&#xff01;&#xff09; 步骤&#xff1a; 将文件/内容上传到终端中 …

Java ConcurrentHashMap

Java Map本质不是线程安全的&#xff0c;HashTable和Collections同步包装器&#xff08;Synchronized Wrapper&#xff09;在并发场景下性能低。Java还为实现 Map 的线程安全提供了并发包&#xff0c;保证线程安全的方式从synchronize简单方式到精细化&#xff0c;比如Concurre…

redis下载、基础数据类型、操作讲解说明,持久化、springboot整合等

1 Redis是什么 官网&#xff1a;https://redis.io 开发者&#xff1a;Antirez Redis诞生于2009年全称是Remote Dictionary Server 远程词典服务器&#xff0c;是一个基于内存的键值型NoSQL数据库。 Redis是一个开源的、高性能的键值对存储系统&#xff0c;它支持多种数据结构&…

C# 解决【托管调试助手 “ContextSwitchDeadlock“:……】问题

文章目录 一、遇到问题二、解决办法 一、遇到问题 托管调试助手 “ContextSwitchDeadlock”:“CLR 无法从 COM 上下文 0x56e81e70 转换为 COM 上下文 0x56e81d48&#xff0c;这种状态已持续 60 秒。拥有目标上下文/单元的线程很有可能执行的是非泵式等待或者在不发送 Windows …

系统学习算法: 专题二 滑动窗口

题目一&#xff1a; 算法原理&#xff1a; 依然第一反应是暴力枚举&#xff0c;将所有的子数组都枚举出来&#xff0c;找到满足条件的长度最小的子数组&#xff0c;但是需要两层循环&#xff0c;时间复杂度来到O&#xff08;N^2&#xff09; 接下来就该思考如何进行优化 如果…

QGIS制作xyz切片(mbtiles)

MBTiles是由MapBox制定的一种将瓦片地图数据存储到SQLite数据库中并可快速使用&#xff0c;管理和分享的规范。它使得数以百万的瓦片数据存储在一个文件中&#xff0c;而且SQLite数据库支持多种平台&#xff0c;所以使用MBTiles在移动设备上浏览瓦片数据是比较理想的方式。 QGI…

软件测试——性能测试工具JMeter

1.JMeter介绍 Apache JMeter是一款纯java编写负载功能测试和性能测试开源工具软件。JMeter小巧轻便且免费&#xff0c;逐渐成为了主流的性能测试工具&#xff0c;是每个测试人员都必须要掌握的工具之一。 环境要求&#xff1a; ​ 需要Java8或者更高的版本。 1.1 JMeter的下…

【C++算法】20.二分查找算法_x 的平方根

文章目录 题目链接&#xff1a;题目描述&#xff1a;解法C 算法代码&#xff1a;图解 题目链接&#xff1a; 69. x 的平方根 题目描述&#xff1a; 解法 暴力解法&#xff1a; 如果x17 从1&#xff0c;2&#xff0c;3&#xff0c;4&#xff0c;5......这些数里面找他们的平方…

拥抱 OpenTelemetry:阿里云 Java Agent 演进实践

作者&#xff1a;陈承 背景 在 2018 年的 2 月&#xff0c;ARMS Java Agent 的第一个版本正式发布&#xff0c;为用户提供无侵入的的可观测数据采集服务。6 年后的今天&#xff0c;随着软件技术的迅猛发展、业务场景的逐渐丰富、用户规模的快速增长&#xff0c;我们逐渐发现过…

【项目日记】仿mudou的高并发服务器 --- 实现HTTP服务器

对于生命&#xff0c;你不妨大胆一点&#xff0c; 因为我们始终要失去它。 --- 尼采 --- ✨✨✨项目地址在这里 ✨✨✨ ✨✨✨https://gitee.com/penggli_2_0/TcpServer✨✨✨ 仿mudou的高并发服务器 1 前言2 Util工具类3 HTTP协议3.1 HTTP请求3.2 HTTP应答 4 上下文解析模块…