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

news/2024/11/30 18:11:52/

   声明! 学习视频来自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]+$ ]]; thenecho "第一个参数是数字。"
elseecho "第一个参数不是数字。"
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.ppmy.cn/news/1551268.html

相关文章

IntelliJ IDEA配置(mac版本)

用惯了eclipse开发java的小伙伴们,初次接触IntelliJ IDEA可能会和我一样,多少有些不适感,在使用过程中总想着eclipse得对应功能。 接下来,我就总结下我日常开发中遇到的常用配置(不包括快捷键,我认为每个人…

《向量数据库指南》——推理阶段:MoE模型的智慧抉择与高效预测

在AI技术的浩瀚星空中,混合专家模型(Mixture-of-Experts,MoE)以其独特的架构和高效的性能,成为了众多研究者心中的璀璨明星。作为大禹智库的向量数据库高级研究员,同时也是《向量数据库指南》的作者,我深知MoE模型在推理阶段所展现出的智慧抉择与高效预测能力,是其能够…

使用 Python 实现 Dijkstra 算法

目录 使用 Python 实现 Dijkstra 算法 1. Dijkstra 算法的基本概念 2. 工作原理 3. Python 实现 图的表示 Dijkstra 算法实现 4. 代码详解 初始化 主循环 返回结果 5. 总结 使用 Python 实现 Dijkstra 算法 Dijkstra 算法是一种用于解决图中单源最短路径问题的经典…

CSS:Web美学的革新之旅

自HTML的诞生之日起,Web页面设计便踏上了一段不断进化的旅程。起初,HTML作为构建网页的骨架,仅承载着最基本的文本结构与少量显示属性。然而,随着互联网的蓬勃发展和用户对视觉体验需求的日益增长,HTML开始不堪重负&am…

JSON格式

JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。它基于JavaScript的一个子集,但是JSON是独立于语言的文本格式,许多编程语言都支持JSON格式的数…

过滤条件包含 OR 谓词,如何进行查询优化——OceanBase SQL 优化实践

这篇博客涉及两个点,一个是 “OR Expansion 改写”,另一个是 “基于代价的改写”。 背景 在写SQL查询时,难以避免在过滤条件中使用 OR 谓词,但其往往会导致索引利用效率下降的问题 。本文将分享如何通过查询改写的2种方式进行优化…

合规性要求对漏洞管理策略的影响

讨论漏洞管理中持续面临的挑战,包括确定漏洞的优先级和解决修补延迟问题。 介绍合规性要求以及自动化如何简化漏洞管理流程。 您认为为什么尽管技术不断进步,但优先考虑漏洞和修补延迟等挑战仍然存在? 企业基础设施日益复杂,攻…

JS怎么实现Module模块化?

在JavaScript中实现模块化主要有两种方式:CommonJS和ES6模块。以下是这两种方法的基本实现: CommonJS CommonJS是Node.js的原生模块系统,但它也可以在浏览器环境中使用通过构建工具如Webpack或Browserify。 模块导出: // myMod…