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

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

除法取余数是要换成%

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

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

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

相关推荐
老当益壮梁奶奶3 分钟前
Linux软件编程学习笔记(二)Linux文件IO编程入门:从fopen到fgetc
linux·c语言·c++·笔记·学习
sunoo-2293 分钟前
C 语言文件 IO 全攻略:从基础函数到实战踩坑(BMP 读取 + 词典查询)
linux·c语言·前端·笔记·vscode·学习
草莓熊Lotso18 分钟前
【Linux网络加餐】手动部署:SSH 与 Web 服务实战 + 底层原理全解析
linux·运维·网络·人工智能·python·langchain·ssh
CHHH_HHH27 分钟前
【Linux系统篇】深入解析Linux文件系统:从磁盘寻址到软硬链接
linux·服务器·开发语言·后端·ubuntu
剑锋所指,所向披靡!28 分钟前
TCP并发服务器
服务器·网络·tcp/ip
XiaQ09191 小时前
Linux 常用命令学习笔记(用户管理篇):用户、组与权限的钥匙
linux·开发语言·笔记·学习
刚入门的大一新生1 小时前
Linux-Linux的进程状态
linux·运维·服务器
AI备忘录1 小时前
(十一)DHCP 配置命令五厂商对照:华为 华三 锐捷 迈普 思科
服务器·网络·网络协议·网络安全·华为
随便做点啥1 小时前
32卡×4090 24GB,Qwen3.8-27B-FP8 集群部署报告
服务器·经验分享·docker·vllm
Brilliantwxx2 小时前
313131
服务器