首页 > 系统相关 >shell脚本3,保姆篇---清风

shell脚本3,保姆篇---清风

时间:2024-11-22 22:13:56浏览次数:3  
标签:脚本 shell bc expr echo --- 保姆 let result

声明:

本文的学习内容来源于B站up主“泷羽sec”视频“蓝队基础之网络七层杀伤链”的公开分享,所有内容仅限于网络安全技术的交流学习,不涉及任何侵犯版权或其他侵权意图。如有任何侵权问题,请联系本人,我将立即删除相关内容。
本文旨在帮助网络安全爱好者提升自身安全技能,并严格遵守国家法律法规。任何人利用本文中的信息从事违法活动,均与本文作者和“泷羽sec”无关。请读者自觉遵纪守法,合理合法使用相关知识。

向脚本程序传递参数的实现

1. 创建脚本文件

创建一个名为 s.sh 的脚本文件,并写入以下内容:

#!/bin/bash 
 
echo "执行的文件名是: $0" 
echo "第一个参数是: $1" 
echo "传递的参数作为一个字符串显示: $*" 
echo "传递的参数独立作为每个字符串显示: $@" 
echo "传递到脚本的参数个数是: $#" 
echo "最后命令的退出状态: $?" 
echo "脚本运行的当前进程ID是: $$"
 
保存并退出编辑器。

在这里插入图片描述

2. 给脚本添加执行权限

执行以下命令,给脚本文件添加可执行权限:

chmod +x s.sh

3. 执行脚本并传递参数

运行脚本时,可以在命令后面添加参数,例如:

./s.sh 参数1 参数2 参数3

4. 脚本内容解释

以下是脚本中各参数变量的解释:

$0:表示当前脚本的文件名或执行路径。
$1、$2...:表示传递给脚本的第一个、第二个……参数。
$*:表示传递给脚本的所有参数,作为一个字符串显示,参数之间以空格分隔。
$@:表示传递给脚本的所有参数,每个参数独立显示,保持独立性。
$#:表示传递给脚本的参数个数。
$?:表示上一个命令的退出状态。0 表示成功,非 0 表示失败。
$$:表示当前脚本运行的进程 ID。

在这里插入图片描述

二、Shell 编程中进行数学运算

1. 使用 expr

expr 是一个外部命令,用于执行基本的整数运算。
语法

expr 表达式

注意

运算符之间必须有空格。
乘法符号 * 必须加反斜杠 \ 以防止被 Shell 解释为通配符。
只支持整数运算,不支持浮点运算。如果需要浮点运算,可以改用 bc 或 awk。

示例

 a=10 b=3 
    # 加法 
    result=$(expr $a + $b) 
    echo "a + b = $result" 
    # 乘法 
    result=$(expr $a \* $b) 
    echo "a * b = $result" 
    # 除法 
    result=$(expr $a / $b) 
    echo "a / b = $result" 
    # 取余 
    result=$(expr $a % $b) 
    echo "a % b = $result"
     
     
    result=$(expr $a + $b) 
    #  expr 是一个外部命令,用于执行整数运算。
    #  $(...) 用于捕获命令的输出,将其赋值给变量 result。
    #  expr $a + $b 表示对变量 a 和 b 的值进行加法运算。

在这里插入图片描述

2. 使用 $(( ))

$(( )) 是 Shell 的内置运算符,支持基本的整数数学运算,推荐使用。
语法

$(( 表达式 ))

特性

支持更简洁的语法。
不需要调用外部命令,效率更高。

示例

  a=10 b=3 
    # 加法 
    result=$((a + b)) 
    echo "a + b = $result" 
    # 减法 
    result=$((a - b)) 
    echo "a - b = $result" 
    # 乘法 
    result=$((a * b)) 
    echo "a * b = $result" 
    # 除法 
    result=$((a / b)) 
    echo "a / b = $result" 
    # 自增和自减 
    ((a++)) 
    echo "a 自增 = $a" 
    ((b--)) 
    echo "b 自减 = $b"

在这里插入图片描述3.

3.使用 let

let 是 Bash 的内置命令,专门用于整数运算。
语法

let 变量=表达式

特性

运算方式类似 $(( )),语法稍微不同。

示例

a=10 b=3 
# 加法 
let result=a+b 
echo "a + b = $result" 
# 减法
let result=a-b 
echo "a - b = $result" 
# 乘法 
let result=a*b 
echo "a * b = $result" 
# 除法
let result=a/b 
echo "a / b = $result" 
# 取余
let result=a%b 
echo "a % b = $result" 
# 自增 
let a++ 
echo "a 自增 = $a" 
# 自减 
let b-- 
echo "b 自减 = $b"

在这里插入图片描述4.

4.使用 bc 进行浮点运算

bc 是 Shell 外部工具,支持浮点数计算,适合复杂数学运算。
语法

echo "表达式" | bc
# kali 使用 apt install -y bc 进行安装

特性

支持浮点运算。
可以设置小数位数 (scale)。
支持科学计算,如幂运算、对数、平方根等。

示例

a=10.5 b=3.2 
# 加法 result=$(echo "$a + $b" | bc) 
echo "a + b = $result" 
# 乘法 result=$(echo "$a * $b" | bc) 
echo "a * b = $result" 
# 除法,保留两位小数 
result=$(echo "scale=2; $a / $b" | bc) 
echo "a / b = $result" 
# 求平方 r
result=$(echo "$a^2" | bc) 
echo "$a 的平方 = $result"

在这里插入图片描述

5. 使用 awk

awk 是一个强大的文本处理工具,同时也支持数学运算,适合进行复杂处理。
语法

awk "BEGIN {print 表达式}"

特性

支持整数和浮点数运算。
灵活且功能强大。

示例

a=10 b=3 
# 加法 
result=$(awk "BEGIN {print $a + $b}") 
echo "a + b = $result" 
# 浮点运算 
result=$(awk "BEGIN {print $a / $b}") 
echo "a / b = $result" 
# 求幂 
result=$(awk "BEGIN {print $a ^ $b}") 
echo "$a 的 $b 次幂 = $result"

在这里插入图片描述

各自区别

expr 、$(()) 、let本身自带,性能高,但是不支持浮点型
bc 、 awk 外部命令,支持浮点型,但是性能略低

参考我师兄链接
我清风与诸君共勉,共创辉煌篇章

标签:脚本,shell,bc,expr,echo,---,保姆,let,result
From: https://blog.csdn.net/weixin_71913298/article/details/143970969

相关文章

  • [Paper Reading] Multi-modal 3D Human Pose Estimation with 2D Weak Supervision in
    目录Multi-modal3DHumanPoseEstimationwith2DWeakSupervisioninAutonomousDrivingTL;DRMethod算法架构ModalityFusionofLiDARandCameraAuxiliaryPointwiseSegmentationBranchImplementationExperiment效果可视化总结与思考相关链接资料查询Multi-modal3DHum......
  • multi-agent-orchestrator aws 开源的多agent 调度框架
    multi-agent-orchestrator是aws开源的多agent调度框架包含的特性多agent调度多语言支持,目前支持python以及typescript包含智能意图分类,可以方便的基于查询以及动态路由灵活的agent响应,支持流以及非流出来支持上下文管理,可以方便的处理一致的上下文交互扩展架构,简单......
  • 题解:AT_abc381_e [ABC381E] E - 11/22 Subsequence
    首先能够想到枚举所有的/,对于每个/计算以它为中间字符时能够产生的最大答案。对于当前询问的区间\((l,r)\),设\(pos\)表示当前这个/的位置。如果令\(s1\)表示区间\([l,pos]\)里1的数量,\(s2\)表示区间\([pos,r]\)里2的数量,那么此时的答案显然就是\(\min(s1,s2)+......
  • 超好用的一款屏幕截图和屏幕贴图软件-------Snipaste
    文章目录Snipastesnipaste下载Snipaste用法SnipasteSnipaste是一个简单但强大的截图工具,也可以让你将截图贴回到屏幕上!下载并打开Snipaste,按下F1来开始截图,再按F3,截图就在桌面置顶显示了。就这么简单!你还可以将剪贴板里的文字或者颜色信息转化为图片窗口,并且......
  • 【论文阅读】【计算机视觉-分割任务】Unstructured Road Segmentation Using Hypercol
    UnstructuredRoadSegmentationUsingHypercolumnBasedRandomForestsofLocalExpertsAuthors:GemmaM.Sanchez,PrassannaGaneshRavishankar,AntonioM.Lopez个人总结本篇文章提出了基于预训练卷积网络提取特征,并用局部专家优化的随机森林模型实现结构化道......
  • Logisim-017-CRC解码
    电路文件所在电路/2-data.circ中的CRC解码1、其中[转换电路]在2-data.circ里面【转换电路】的原理是:余数和出错位数的关系是个映射关系,可以通过转换电路,转换成【循环左移电路】所需要左移的位数可以用真值表生成,生成时,r5r4r3r2r1系统自带的有,先将s4s3s2s1s0都置......
  • 【计算机毕业设计选题】最新毕设选题----基于微信小程序的校园心理咨询服务系统的设计
    博主介绍:原计算机互联网大厂开发,十年开发经验,带领技术团队几十名,专注技术开发,计算机毕设实战导师,专注Java、Python、小程序、安卓、深度学习和算法开发研究。主要服务内容:选题定题、开题报告、任务书、程序开发、文档编写和辅导、文档降重、程序讲解、答辩辅导等,欢迎咨询~......
  • 【云岚到家】-day08-3-系统优化-查询优化
    【云岚到家】-day08-3-系统优化-查询优化0本期代码仓库3订单查询优化3.1订单查询优化方案1)为什么要优化订单查询?2)确定优化方向3)订单详情优化方案4)用户端订单列表优化方案5)运营端订单列表优化方案3.2订单详情优化1)阅读状态机快照查询代码2)订单详情查询优化3)测试3.2......
  • 【若依】-day01-1-搭建及使用
    【若依】-day01-1-搭建及使用1若依搭建1.1若依版本1.2RuoYi-Vue1.3运行后端项目1.3.1初始化项目Git下载并进行Maven构建1.4构建数据库1.4.1配置mysql1.4.2配置redis配置信息1.5项目运行1.6运行前端项目1.6.1初始化项目1.6.2项目运行2入门案例2.1功能......
  • 代码随想录第十天|栈与队列part01--栈与队列理论基础、225.用队列实现栈、232.用栈实
    资源引用:栈与队列理论基础(栈与队列理论基础)leetcode题目:225.用队列实现栈(225.用队列实现栈)232.用栈实现队列(232.用栈实现队列)20.有效的括号(20.有效的括号)1047.删除字符串中的所有相邻重复项(1047.删除字符串中的所有相邻重复项)久违碎碎念:“放弃不可怕,可怕的是没有继续......