shell编写——脚本传参与运算

shell编写------脚本传参与运算

声明!

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

如何向脚本进行传参

像上面这种脚本时如何编写出来的呢?其实就是使用啦几个参数

shell 复制代码
echo 执行的文件名是:$0
echo 第一个参数是:$1
echo 传递的参数作为一个字符串显示:$*
echo 传递的参数独立作为每个字符串显示:$@
echo 传递到脚本的参数个数是:$#
echo 最后命令的退出状态:$?
echo 脚本运行的当前进程ID是:$$

参数传递一般为$n(这里的n表示数字,可以递增来用,其中的$0比较特殊表示文件名称)

$*:将参数当作统一的字符串显示出来

$@:是将每个字符串当作独立的字符串显示

∗ 和 *和 ∗和@的输出结果看起来很相似,实际上并不一样

$#:代表参数的个数

$?:查看命令执行状态的,如果显示为0那么命令就是正常执行的,其他数字就是出错了

$$:查看脚本当前进程id

上面的有些输出结果是空的,是因为没有对其进行传参,先对其进行一个传参

shell 复制代码
# 给他传一个name参数
┌──(root㉿kali-linux-2024-2)-[/home/parallels/Desktop]
└─# sh s.sh name
执行的文件名是:s.sh
第一个参数是:name
传递的参数作为一个字符串显示:name
传递的参数独立作为每个字符串显示:name
传递到脚本的参数个数是:1
最后命令的退出状态:0
脚本运行的当前进程ID是:1366346

如何同时传入多个参数呢?

这里先修改一下原来的s.sh

复制代码
echo 执行的文件名是:$0
echo 第一个参数是:$1
echo 第二个参数是:$2
echo 第三个参数是:$3
echo 传递的参数作为一个字符串显示:$*
echo 传递的参数独立作为每个字符串显示:$@
echo 传递到脚本的参数个数是:$#
echo 最后命令的退出状态:$?
echo 脚本运行的当前进程ID是:$$

在此运行一下看看

接下来对其进行传参,其实和刚刚一样,多输入几个就好了。

比如:这里用 1,2,3举例

如何在shell中进行数学运算

shell编程在数学运算的时候是相当麻烦的,比python麻烦很多很多

这里需要用到的是expr,先看图吧

会发现第一个明显不对,他把原来的一摸一样的输出啦,这是因为读取问题,要改成10 + 5中间要带空格,而python不用,加减乘除都是这样

在这里会发现进行乘法是只输入*会报错要进行一个转意\*

除法取余数是要换成%

混合运算时默认的还是遵循先加减后乘除,要改变的话要加括号,并且括号和数字之间要有空格,然后括号要转意

补充:变量和数学运算的联动

对变量赋值的是要带$()不然只会输出计算式

相关推荐
尤老师FPGA7 小时前
petalinux修改设备树添加vdma生成linux系统
android·linux·运维
yxy___7 小时前
达梦分布式集群DPC_重做副本-操作指南(DEM)_yxy
运维·分布式
月山知了7 小时前
linux kernel component子系统:基于rk3588 Android 14 kernel-6.1 display-subsystem代码分析
android·linux·运维
_Emma_7 小时前
【QCOM】 Linux下qcom venus 编解码驱动框架分析
linux·驱动开发·视频编解码
星辰徐哥8 小时前
大模型工程化部署:Docker Compose批量部署
运维·docker·容器
SEO-狼术8 小时前
Support Network Diagnostics in .NET
运维·服务器·网络
AI周红伟8 小时前
AI自动盯盘与定时行情分析:OpenClaw股票辅助Agent集成完整使用指南-周红伟
运维·服务器·人工智能·音视频·火山引擎
不才小强8 小时前
Linux系统常用命令
linux·运维·网络
SPC的存折9 小时前
8、Ansible之Playbook---Roles
linux·服务器·ansible
Kira Skyler9 小时前
BPF KPROBE编程中的ctx是什么?
linux