当前位置: 首页 > article >正文

shell脚本(三)

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


脚本参数传递与数学运算

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

可以向脚本程序传递一个或者多个参数,脚本中的$1,里面的数字是可以依次递增的,比如`$!,$2,$3`等等,其中$0(比较特殊表示文件名称)

那么好 我们利用vim写入脚本9.sh,再利用sh 9.sh执行文件,我们看看执行结果

执行文件名是: 9.sh
第一个参数是:
传递的参数作为一个字符串显示:
传递的参数独立作为每一个字符串显示:
传递到脚本的参数个数是: 0
最后命令的退出状态: 0
脚本运行的当前进程ID是: 4958

在这里插入图片描述

上面显示第一个参数为空,因为我们没有给它指定任何一个参数,我们给他指定一个参数name,9.sh name

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

在这里插入图片描述

然后第一个参数就为name
那么假设我们加入第二个,第三个参数,修改脚本

vim 9.sh echo

指定参数名为 sh 9.sh 1 2 3

执行文件名是: 9.sh
第一个参数是: 1
第二个参数是: 2
第三个参数是: 3
传递的参数作为一个字符串显示: 1 2 3
传递的参数独立作为每一个字符串显示: 1 2 3
传递到脚本的参数个数是: 3
最后命令的退出状态: 0
脚本运行的当前进程ID是:11875

在这里插入图片描述

由此得出 参数传递一般为$n(n表示数字 可递增),$*就是将参数当作统一的字符串显示出来,而$@是将每个字符串当作独立的字符串显示 这也是$*$@ 的区别,$#代表参数的个数,$?是查看命令执行状态的 如果显示为0 那么命令就是正常执行的,其他数字就是出错了,$$就是查看脚本当前进程id的

shell编程中进行数学运算

shell编程在数学运算的时候是相当麻烦的,python中的数学运算可能很简单,在shell编程中 利用expr进行运算

expr 5+10 回显 5+10 那么该怎么运算是 expr 5 + 10 这样写注意中间有空格 5(空格) +(空格)10
这仅仅适用于加减法,用于乘法就会报错
在这里插入图片描述
在这里插入图片描述

expr 6 \* 6 (乘法是用* python直接*就行了 要用\进行转义)
在这里插入图片描述

那么除法就用两种方法 一种是/取整 %取余数

expr 6 / 3\

在这里插入图片描述

expr 6 % 4

在这里插入图片描述

混合运算
expr 5 + 6 \* 7 (shell会按照先乘除后加减运算)
在这里插入图片描述

expr ( 5 + 7 ) / 2(如果有括号这样直接运算也会报错,括号也要进行转义)
在这里插入图片描述

expr \( 5 + 7 \) / 2

在这里插入图片描述

运算变量结合

name='expr 5 + 6'
echo $name

在这里插入图片描述


http://www.kler.cn/a/406343.html

相关文章:

  • 使用golang启动一个http代理
  • Docker核心概念总结
  • 空间数据存储格式GeoJSON
  • 如何使用Jest测试你的React组件
  • 002 MATLAB语言基础
  • python基本数据类型 -- 元组tuple
  • Java教程:SE进阶【十万字详解】(中)
  • 移动语义和拷贝语义的区别以及智能指针
  • 数据结构--并查集
  • 比rsync更强大的文件同步工具rclone
  • 解析粗糙度仪在工业制造及材料科学和建筑工程领域的重要性
  • 半导体工艺与制造篇5 光刻
  • 40分钟学 Go 语言高并发:并发下载器开发实战教程
  • 「Chromeg谷歌浏览器/Edge浏览器」篡改猴Tempermongkey插件的安装与使用
  • 倒计时功能分享
  • 数据结构-8.Java. 七大排序算法(上篇)
  • Linux 手动升级软件保姆级教程,适用所有软件,不限于麒麟等国产系统
  • 【Golang】协程
  • 迁移学习理论与应用
  • 力扣--LRC 142.训练计划IV
  • Ubuntu ESP32开发环境搭建
  • 五天SpringCloud计划——DAY2之使用Docker完成项目的部署
  • Excel的图表使用和导出准备
  • [面试]-golang基础面试题总结
  • redis7.x源码分析:(4) ae事件处理器(一)
  • 《Django 5 By Example》阅读笔记:p645-p650