首页 > 系统相关 >泷羽sec-shell (3)脚本参数传递与数学运算

泷羽sec-shell (3)脚本参数传递与数学运算

时间:2024-11-29 22:29:33浏览次数:11  
标签:脚本 shell 运算 expr echo sh 参数 sec 泷羽

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

本章课程链接:shell (3)脚本参数传递与数学运算_哔哩哔哩_bilibili

脚本参数传递

1.基本概念

        在 Shell 脚本中,参数传递是一种将外部的值传递到脚本内部的机制。当执行一个 Shell 脚本时,可以在脚本名称后面跟上一些参数,这些参数可以在脚本内部被使用,就像函数的参数一样。

        在 Shell 脚本中,参数可以通过特殊的变量来访问。$0代表脚本本身的名称,$1代表传递给脚本的第一个参数,$2代表第二个参数,以此类推。$#表示传递给脚本的参数的个数。

例如,下面是一个简单的脚本5.sh:

echo "脚本名称是:$0"
echo "第一个参数是:$1"
echo "第二个参数是:$2"
echo "参数的个数是:$#"

当执行./5.sh hello world时,输出结果如下:

2.特殊参数处理

$*  会将所有的参数作为一个字符串传出,以空格分隔的字符串。

$0:脚本名称。
$#:传递给脚本的参数个数。
$@:与 $* 类似,但保留参数的分隔方式。
$$:当前脚本的进程 ID。
$?:上一个命令的返回值(退出状态)。
$_: 上一个命令的最后一个参数。
"$*":将所有参数视为一个整体,参数之间使用$IFS分隔。
"$@":将每个参数视为独立的个体。

例如6.sh:

echo "使用\$*获取所有参数:$*"

3.参数的移位操作

shift命令用于将参数向左移动。每次执行shift命令,$1的值会被丢弃,$2的值会变成$1,$3的值会变成$2,以此类推。
例如,下面的脚本7.sh:

echo "初始的第一个参数:$1"
shift
echo "移位后的第一个参数:$1"

当执行./7.sh arg1 arg2时,输出是:

4.使用参数进行条件判断和运算

可以根据传递的参数进行条件判断。例如,判断参数是否符合特定的格式或者范围。
下面是一个简单的脚本check_arg.sh,用于检查第一个参数是否是数字:

if [[ $1 =~ ^[0 - 9]+$ ]]; then
    echo "第一个参数是数字。"
else
    echo "第一个参数不是数字。"
fi

也可以对参数进行算术运算。例如,有一个脚本add_args.sh用于计算两个参数的和:

sum=$(($1 + $2))
echo "两个参数的和是:$sum"

向脚本传递参数:

echo 执行的文件名是: $0

echo 第一个参数是: $1

echo 传递的参数作为一个字符串显示: $*

echo 传递的参数独立作为每个字符串显示: $@

echo 传递到脚本的参数个数是: $#

echo 最后命令的退出状态: $?

echo 脚本运行的当前进程ID是: $$

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

如:

shell的数学运算

基本算术运算
在 Shell 中可以进行基本的算术运算,如加法、减法、乘法和除法。常见的有两种方式,一种是使用expr命令,另一种是使用$(( ))或$( )(在某些情况下)结构。

使用expr命令

加法示例:
expr 2 + 3,在命令行中输入这个命令,会返回结果5。注意,expr命令中的运算符和操作数之间需要用空格隔开。

减法示例:
expr 5 - 2会返回3。
乘法示例:
乘法稍微有点复杂,因为在expr命令中,乘法运算符需要转义。例如,expr 3 \* 4会返回12。

取余运算(模运算)
取余运算可以得到除法运算的余数。使用expr命令

例如,expr 7 % 3会返回1,即 7 除以 3 的余数。

使用$(( ))结构
可以写成echo $((7 % 3)),同样会返回1。

除法示例:
expr 10 / 2会返回5。
使用$(( ))结构
这是一种更方便的算术运算方式。例如,echo $((2 + 3))会在终端输出5。它支持多种算术运算,并且不需要对运算符进行特殊处理(如乘法不需要转义)。减法可以这样写:echo $((7 - 4)),输出为3;乘法如echo $((3*4)),输出为12;除法如echo $((10/2)),输出为5。

加减法:

乘除法:

取余

混合运算(Shell会先乘除后加减)

如果想先加减后乘除可以使用括号,但是需要使用转义符\

如:

运算与变量结合

注意是反引号 [ ` ]  ——ESC键下方,1键左方

反引号与单引号的区别:

标签:脚本,shell,运算,expr,echo,sh,参数,sec,泷羽
From: https://blog.csdn.net/weixin_44334319/article/details/144122227

相关文章

  • PE文件结构解析 Part4 Data Directories, Section Headers and Sections
    文章来源:https://0xrick.github.io/win-internals/pe5/目录简介DataDirectoriesSections以及SectionHeadersSectionHeaders总结简介上一篇文章中,我们讨论了NTHeaders,但是我们跳过了OptionalHeader最后的datadirectories字段。这篇文章中,我们会讨论datadirectories是......
  • Spring-线程池执行save语句报错“ No SecurityManager accessible to the calling cod
    报错信息:Cause:org.apache.shiro.UnavailableSecurityManagerException:NoSecurityManageraccessibletothecallingcode,eitherboundtotheorg.apache.shiro.util.ThreadContextorasavmstaticsingleton.Thisisaninvalidapplicationconfiguration.ator......
  • Security, Privacy and Ethics
    Security,PrivacyandEthicsCoursework2B:EvaluatingthepotentialrisksandbenefitsofAItechnologiesonprivacyandpersonalLearningoutcomesassessed:dataC:UnderstandingtheimportanceoffairnessinAIsystemsanditsimplicationsOverview......
  • 使用 Intersection Observer API以及动态加载内容细节
    1使用IntersectionObserverAPI什么是IntersectionObserver?IntersectionObserverAPI是现代浏览器提供的一种接口,用于检测一个元素(目标元素)是否与视口(用户可见区域)或某个特定父容器交叉。优点不需要手动监听滚动事件,性能更优。在用户接近目标区域时触发,比滚动事件......
  • 在pinia中使用SecureLS将数据加密后存储到localStorage中,获取的时候解密使用
    第一步对secure-ls进行安装:npminstallsecure-ls第二步:secure-ls的引入:importSecureLSfrom"secure-ls";点击查看代码import{ref}from"vue";import{defineStore}from"pinia";importtype{StorageLike}from"pinia-plugin-pers......
  • shell脚本30个案例(五)
    前言:通过一个多月的shell学习,总共写出30个案例,分批次进行发布,这次总共发布了5个案例,希望能够对大家的学习和使用有所帮助,更多案例会在下期进行发布。案例二十一、系统内核优化1.问题:在服务器或高性能计算环境中,系统内核的默认参数可能无法满足特定工作负载的需求,导致性能不......
  • 使用PowerShell启用用户的MFA
    前言最近,在研究如何用代码启用AAD账户的MFA。正文命令如下,需要连接MgGraph,如果没有安装过Microsoft.Graph,需要先安装模块:Install-ModuleMicrosoft.Graph-ScopeCurrentUserConnect-MgGraph-ClientId"53bc74d4-1234-1234-1234-dd9b1c605883"-Tenant......
  • beanshell 断言 jmeter脚本断言json 响应体
    importorg.json.JSONObject;importorg.json.JSONArray;Stringresponse=prev.getResponseDataAsString();try{//将响应字符串转换为JSON对象JSONObjectjsonResponse=newJSONObject(response);//获取code,message和skuList字段intcode......
  • 泷羽sec-shell编程(2)永久环境变量和字符串显位 学习笔记
      声明!学习视频来自B站up主**泷羽sec**有兴趣的师傅可以关注一下,如涉及侵权马上删除文章,笔记只是方便各位师傅的学习和探讨,文章所提到的网站以及内容,只做学习交流,其他均与本人以及泷羽sec团队无关,切勿触碰法律底线,否则后果自负!!!!有兴趣的小伙伴可以点击下面连接进入b站主页[......
  • shell(6)if条件判断与for循环结构
     声明!学习视频来自B站up主泷羽sec有兴趣的师傅可以关注一下,如涉及侵权马上删除文章,笔记只是方便各位师傅的学习和探讨,文章所提到的网站以及内容,只做学习交流,其他均与本人以及泷羽sec团队无关,切勿触碰法律底线,否则后果自负!!!!有兴趣的小伙伴可以点击下面连接进入b站主页泷羽sec......