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不用,加减乘除都是这样

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

除法取余数是要换成%

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

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

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

相关推荐
联盟分享专家35 分钟前
垂直工具型 SaaS 的增长实战:如何把用户变成推广者?
运维
normanhere44 分钟前
浪潮云国产化超融合规划和部署案例
服务器·网络
Leon-Ning Liu2 小时前
【真实经验分享】OGG抽取进程报错 ORA-07445 [kgherrordmp()+986] ORA-00600 [17114]分析步骤
运维·数据库
CCPC不拿奖不改名2 小时前
Redis 工程化部署深度解析
linux·服务器·数据库·redis·深度学习·缓存·rag
QWEDDRFTG2 小时前
运维长期经验总结:从故障倒推服务器电源线选购标准
运维·服务器
Mr.wangh2 小时前
聊天模型--流式传输
运维·服务器
有颜有货2 小时前
PMC生产排产的4种算法,一次讲清
java·服务器·前端
智恒百亿2 小时前
算力基建深度分析:国内服务器产业高强度迭代下的技术壁垒与全球化优势
服务器·人工智能·算力基建
fei_sun2 小时前
等价负载均衡(等价路由ECMP)
运维·负载均衡
楷哥爱开发2 小时前
降低网络爬虫成本:基础设施优化指南
服务器·开发语言·php