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

   声明! 学习视频来自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键左方

反引号与单引号的区别:

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

QT实战--qt各种按钮实现

本篇介绍qt一些按钮的实现,包括正常按钮;带有下拉箭头的按钮的各种实现;按钮和箭头两部分分别响应;图片和按钮大小一致;图片和按钮大小不一致的处理;文字和图片位置的按钮 效果图如下: 详细实现…

MTK主板_小型联发科安卓主板_行业智能终端主板基于联发科方案

MTK安卓主板是一款小巧而高效的科技产品,其尺寸仅为43.4mm x 57.6mm。采用了先进的联发科12nm制程工艺,这款主板搭载四核或八核64位A53架构的CPU,主频高达2.0GHz,不但保证了出色的计算能力,还实现了超低功耗的特点。系…

Web day02 Js Vue Ajax

目录 1.javascript: 1.js的引入方式: 2.js变量 & 数据类型 & 输出语句: 模板字符串: 3.函数 & 自定义对象: 4. json 字符串 & DOM操作: 5. js事件监听: 6.js的模块化导入或者导出&a…

Dify进阶:知识库构建,MinerU安装完成,看看效果

文章目录 最终效果展示MinerU安装成功 最终效果展示 MinerU安装成功 上回说道,MinerU可以将pdf转化为Markdown,这对于大语言模型的知识库构建来说,十分重要。 由于我是windows电脑,使用的安装步骤是,直接从github下载…

皮肤癌检测 6596张图片支持YOLO,COCO,VOC的

关于数据集 使用YOLO、COCO和VOC等算法和数据集可以提高皮肤癌检测的准确性和效率,帮助医生和患者识别和治疗皮肤癌。这里我整理了一下yolov5, yolov7,yolov8,yolov9,yolov11, coco,cov标记的数据集。 数据集分割 6596总图像数 训练组 82% …

Vue.js 中 v-for 指令的三种常见用法详解及key、value、id的作用

作者:CSDN-PleaSure乐事 欢迎大家阅读我的博客 希望大家喜欢 使用环境:WebStorm 目录 遍历数组 介绍 代码 遍历对象数组 介绍 代码 遍历对象本身 介绍 代码 效果呈现 key、value、id的作用 1. value 2. key 3. id 在 Vue.js 中&#xff0c…

【C语言算法】蛇形方阵 暴力破解之(if函数)

文章目录 1. 问题描述2. 题目分析与代码设计3. 代码实现4. 运行效果 1. 问题描述 在n x n(n≤8)方阵里填入1,2,3,…,n x n,要求填成蛇形。 列如 n4 时方阵为: 2. 题目分析与代码设计 算法的步骤和分析&…

从覆盖到拼接:优化 onInput 事件的输入

在使用 ElSelect 组件的 onInput 事件时,由于每次输入都触发搜索,导致请求频繁且新搜索结果覆盖了旧结果,无法实现输入数据的累积搜索。我们希望的是,每次搜索能够将新的输入内容与之前的内容拼接显示,从而实现用户的诉…

Flink四大基石之CheckPoint

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

如何给GitHub的开源项目贡献PR

🎯导读:本文详细介绍了如何向开源项目“代码随想录”贡献自己的题解。首先,需要Fork原项目的仓库至个人GitHub账户,然后解决克隆仓库时可能遇到的SSH密钥问题。接着,按照标准流程对本地仓库进行代码或文档的修改&#…

不可分割的整体—系统思考的微妙法则

不可分割的整体——系统思考的微妙法则 作为企业领导者,我们经常需要做出决策,但有时候,我们会忽略一个事实:每个决策都不是孤立的,它背后都是一个复杂系统的一部分。 无论是市场动态、团队协作,还是产品…

layui-vue第三方库表格列事件怎么写

插槽写入列点击事件 <div class"le-table-box" ref"TableBoxRef" :style"{ height: ShowPage ? calc(100% - 60px) : 100% }"><lay-table row-double"dbRowClick" :columns"TableColumn" :data-source"Table…

第一个 C++ 程序 001

1. main 函数 同 c 语言的 main 函数 2. 字符和字符串 在C的 STL 中⼜引⼊了 string 来表⽰字符串&#xff0c;功能更加强⼤&#xff0c;C 语⾔不⽀持&#xff0c;后期会详细介绍。 其他的和 c 语言类似 3. 头文件 和 C 语言中的头文件一样&#xff0c;相当于一个工具箱 不过…

修改插槽样式,el-input 插槽 append 的样式

需缩少插槽 append 的 宽度 方法1、使用内联样式直接修改&#xff0c;指定 width 为 30px <el-input v-model"props.applyBasicInfo.outerApplyId" :disabled"props.operateCommandType input-modify"><template #append><el-button click…

Hot100 - 搜索二维矩阵II

Hot100 - 搜索二维矩阵II 最佳思路&#xff1a; 利用矩阵的特性&#xff0c;针对搜索操作可以从右上角或者左下角开始。通过判断当前位置的元素与目标值的关系&#xff0c;逐步缩小搜索范围&#xff0c;从而达到较高的效率。 从右上角开始&#xff1a;假设矩阵是升序排列的&a…

杂七杂八的网络安全知识

一、信息安全概述# 1.信息与信息安全# 信息与信息技术 信息奠基人&#xff1a;香农&#xff1a;信息是用来消除随机不确定性的东西 信息的定义&#xff1a;信息是有意义的数据&#xff0c;是一种要适当保护的资产。数据经过加工处理之后&#xff0c;就成为信息。而信息需要…

Vision Transformer(vit)的Embedding层结构

代码&#xff1a; class PatchEmbed(nn.Module):"""2D Image to Patch Embedding"""def __init__(self, img_size224, patch_size16, in_c3, embed_dim768, norm_layerNone):super().__init__()img_size (img_size, img_size) #图像尺寸默认22…

Spring Boot 实战:基于 Validation 注解实现分层数据校验与校验异常拦截器统一返回处理

1. 概述 本文介绍了在spring boot框架下&#xff0c;使用validation数据校验注解&#xff0c;针对不同请求链接的前端传参数据&#xff0c;进行分层视图对象的校验&#xff0c;并通过配置全局异常处理器捕获传参校验失败异常&#xff0c;自动返回校验出错的异常数据。 2. 依赖…

Linux查看网络基础命令

文章目录 Linux网络基础命令1. ifconfig 和 ip一、ifconfig命令二、ip命令 2. ss命令一、基本用法二、常用选项三、输出信息四、使用示例 3. sar 命令一、使用sar查看网络使用情况 4. ping 命令一、基本用法二、常用选项三、输出结果四、使用示例 Linux网络基础命令 1. ifconf…

Python酷库之旅-第三方库Pandas(245)

目录 一、用法精讲 1156、pandas.tseries.offsets.MonthEnd.is_month_start方法 1156-1、语法 1156-2、参数 1156-3、功能 1156-4、返回值 1156-5、说明 1156-6、用法 1156-6-1、数据准备 1156-6-2、代码示例 1156-6-3、结果输出 1157、pandas.tseries.offsets.Mon…