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

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

除法取余数是要换成%

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

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

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

相关推荐
johnny2332 小时前
运维管理面板:AcePanel、OpenOcta、DeepSentry
运维
青梅橘子皮2 小时前
Linux---基本指令
linux·运维·服务器
REDcker3 小时前
Linux信号机制详解 POSIX语义与内核要点 sigaction与备用栈实践
linux·运维·php
cui_ruicheng4 小时前
Linux进程间通信(三):System V IPC与共享内存
linux·运维·服务器
蚰蜒螟4 小时前
深入 Linux 内核同步机制:从 futex 到 spinlock 的完整旅程
linux·windows·microsoft
运维全栈笔记4 小时前
Linux安装配置Tomcat保姆级教程:从部署到性能调优
linux·服务器·中间件·tomcat·apache·web
dllmayday5 小时前
Linux 上用终端连接 WiFi
linux·服务器·windows
ACP广源盛139246256735 小时前
IX8024与科学大模型的碰撞@ACP#筑牢科研 AI 算力高速枢纽分享
运维·服务器·网络·数据库·人工智能·嵌入式硬件·电脑
峥无7 小时前
Linux系统编程基石:静态库·动态库·ELF文件·进程地址空间全景图
linux·运维·服务器
用户2367829801687 小时前
从 chmod 755 说起:Unix 文件权限到底是怎么算的?
linux