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

embedded/2024/11/25 18:04:35/

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

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

如何向脚本进行传参

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

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

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

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

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

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

$#:代表参数的个数

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

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

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

# 给他传一个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不用,加减乘除都是这样

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

除法取余数是要换成%

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

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

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


http://www.ppmy.cn/embedded/140451.html

相关文章

leetcode_25_k个一组翻转链表

力扣:k个一组翻转链表 链接:https://leetcode.cn/problems/reverse-nodes-in-k-group/ 给你链表的头节点 head ,每 k 个节点一组进行翻转,请你返回修改后的链表。 k 是一个正整数,它的值小于或等于链表的长度。如果节点总数不是 k…

数据结构进阶(C++) -- AVL树的实现

AVL树 概念 1962年,前苏联的科学家G.M.Adelson-Velsky和E.M.Landis 在论文《An algorithm for the organization of information》中发表了AVL树。AVL树是最先发明的自平衡二叉搜索树,AVL树可以是一棵空树,也可以是具备下列性质的二叉搜索树…

Centos环境安装Docker

一、Centos环境安装Docker 本文目录 一、Centos环境安装Docker1.1 在线安装Docker1、更新yum2、安装工具包3、设置镜像源4、安装前卸载原有的docker5、安装最新版本的docker ce6、启动docker7、设置开机启动docker8、安装好之后查看docker 版本9、配置容器镜像加速地址10、重载…

Nacos 与 Eureka 的区别

随着微服务架构的流行,服务发现成为了构建分布式系统的关键技术之一。在众多服务发现工具中,Nacos 和 Eureka 是两个非常受欢迎的选择。本文将深入探讨这两者的区别,帮助你在选择适合自己的服务发现解决方案时做出明智的决策。 如果你不懂得怎…

Go语言链接Redis数据库

1.使用go get命令安装go-redis/v8库: 我这里使用的vscode工具安装: go get github.com/go-redis/redis/v82.创建Redis客户端实例 使用以下Go代码连接到Redis服务器并执行命令: package mainimport ("context""fmt"&q…

基于物联网设计的人工淡水湖养殖系统(华为云IOT)_253

文章目录 一、前言1.1 项目介绍【1】项目开发背景【2】设计实现的功能【3】项目硬件模块组成【4】设计意义【5】国内外研究现状【6】摘要1.2 设计思路1.3 系统功能总结1.4 开发工具的选择【1】设备端开发【2】上位机开发1.5 参考文献1.6 系统框架图1.7 系统原理图1.8 实物图1.9…

学习记录:js算法(一百零二):使用最小花费爬楼梯

文章目录 使用最小花费爬楼梯思路一 使用最小花费爬楼梯 给你一个整数数组 cost ,其中 cost[i] 是从楼梯第 i 个台阶向上爬需要支付的费用。一旦你支付此费用,即可选择向上爬一个或者两个台阶。 你可以选择从下标为 0 或下标为 1 的台阶开始爬楼梯。 请你…

C51数字时钟/日历---LCD1602液晶显示屏

题目要求: 数字电子日历/时钟设计 设计一个基于MCS51的电子日历和时钟。 基本要求 (1) 可通过按键在日历和时间之间切换显示; (2) 可由按键调整日期和时间 (3) 可整点报时&#x…