首页 > 系统相关 >Shell脚本入门指南(三):参数传递与数学运算

Shell脚本入门指南(三):参数传递与数学运算

时间:2024-11-22 15:18:30浏览次数:3  
标签:脚本 Shell 入门 expr echo 参数传递 参数 运算

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


目录

  1. 向 Shell 脚本程序传递参数
  2. 在 Shell 编程中进行数学运算

向 Shell 脚本程序传递参数

在 Shell 脚本中,我们可以通过位置参数向脚本传递外部输入的参数。脚本可以通过特殊变量来访问这些参数,进而进行相应的处理。

位置参数介绍

在脚本执行时,命令行参数会依次赋值给特殊的变量。位置参数的编号从 $1 开始,$1 表示第一个参数,$2 表示第二个参数,依此类推。

常用位置参数

以下是一些常用的 Shell 脚本位置参数及其功能:

  • $0:脚本的名称或路径。例如,如果脚本名为 1.sh,那么 $0 的值就是 1.sh

  • $1$9:脚本的第一个到第九个参数。例如,$1 是第一个参数,$2 是第二个参数,依此类推。

  • $@$*:所有传递给脚本的参数。这两个变量的区别在于处理带空格的参数时:

    • $@:每个参数会作为独立的字符串处理。
    • $*:所有参数会合并成一个字符串,参数之间用空格分隔。
  • $#:传递给脚本的参数个数。例如,$#1.sh arg1 arg2 arg3 中会返回 3

  • $?:表示上一个命令的退出状态。值为 0 表示命令执行成功,非 0 表示命令失败。

  • $$:表示脚本当前的进程 ID。

将参数传递到脚本

以下是一个示例脚本 1.sh,它演示了如何通过位置参数获取传递给脚本的输入:

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

假设你执行脚本时传递了参数:

sh 1.sh apple banana cherry

脚本的输出将是:

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

在 Shell 编程中进行数学运算

Shell 编程中进行数学运算有时会显得有些麻烦,但我们可以使用一些内置的工具,如 expr 来进行基本的运算。以下是一些常见的数学运算示例。

基本数学运算

Shell 提供了 expr 命令来执行简单的数学运算。常见的运算包括加法、减法、乘法、除法和取余。

示例:常见的运算
  • 加法

    expr 1 + 1
    
  • 减法

    expr 2 - 1
    
  • 乘法

    expr 2 \* 2
    
  • 除法

    expr 4 / 2
    
  • 取余

    expr 20 % 10
    

注意:在使用 expr 时,运算符和数字之间必须加上空格,且乘法运算符 * 需要使用反斜杠 \ 转义。

混合运算

在 Shell 中,进行混合运算时,如果表达式中包含括号,必须使用反斜杠 \ 转义括号。以下是一个示例,计算 (1 + 1) * 3

expr \( 1 + 1 \) \* 3

该表达式将返回 6,因为括号内的 1 + 1 会先计算,然后乘以 3

变量与混合运算

如果你想将变量与运算结合,可以通过赋值将表达式传递给 expreval 来执行。以下是一个使用变量的示例:

name='expr \( 1 + 1 \) \* 3'
eval $name

此时,Shell 会先将 name 变量的值作为命令来执行,相当于执行了 expr \( 1 + 1 \) \* 3,并输出结果 6

标签:脚本,Shell,入门,expr,echo,参数传递,参数,运算
From: https://blog.csdn.net/2401_87640455/article/details/143974658

相关文章

  • Python 初学者的学习指南:从入门到实践 ---亲身经历版本!!!
    前言Python因其简单易学、功能强大而成为初学者编程的首选语言。无论你是零基础的小白,还是想拓展技能的开发者,Python都能为你提供无限可能。本篇博客将为Python初学者提供一套学习方法和学习路线,帮助你在短时间内掌握Python编程的核心知识,并学以致用。学习方法明......
  • 嵌入式从入门到入土
    学习目标:(本次学习只是让我们有个大致的了解)在GEC6818开发板上实现荷兰、法国国旗图案显示了解ARM开发板图⽚显⽰原理了解BMP图⽚在开发板显⽰时存在的问题(上)学习内容:在GEC6818开发板上实现荷兰、法国国旗图案显示注意:请在800*480的LCD屏幕上绘制荷兰国旗第0......
  • 简单shell编程(操作系统实验三)
    1.Shell变量的定义及其使用1.shell变量shell有两种变量:环境变量和临时变量。环境变量是永久性变量,不会随shell脚本的执行结束而消失。临时变量是在shell程序内部定义的,其使用范围仅限于定义它的程序,出了本程序就不能再用它:而且当程序执行完毕,它就不存在了。在shell脚本中......
  • Ansible快速入门
    Ansible快速入门一、介绍Ansible是一款简单的运维自动化工具,只需要使用ssh协议连接就可以来进行系统管理,自动化执行命令,部署等任务。Ansible的特点1、ansible不需要单独安装客户端,也不需要启动任何服务2、ansible是python中的一套完整的自动化执行任务模块3、ansibleplaybo......
  • MISC从入门到放弃
    右侧有目录导航[BUUCTF]RSA分析得到一段文字:在一次RSA密钥对生成中,假设p=473398607161,q=4511491,e=17求解出d作为flga提交解题第一想法是python脚本,网上找到一个importgmpy2p=473398607161q=4511491e=17d=int(gmpy2.invert(e,(p-1)*(q-1)))print(d)得到fl......
  • 超详细版:Centos7在LAMP环境下的Shell脚本部署Nextcloud(13.0.9)
     一、核心功能文件同步与分享:通过Nextcloud,用户可以轻松地在不同设备之间同步和共享文件。无论是照片、视频、文档还是其他文件类型,都可以方便地访问和共享。二、应用场景个人用户:个人用户可以通过Nextcloud搭建自己的私有云、实现跨设备的数据同步和备份。企业:企业可以使......
  • (长期更新)《零基础入门 ArcGIS(ArcMap) 》实验一(上)----空间数据的编辑与处理(超超超详细
    老规矩,点赞+收藏+长评+关注!!!需要实验数据的直接划到博客最底端。目录ArcMap介绍概念操作地图操作地图浏览分析显示结果定制编程ArcMap下载ArcMap实验--空间数据的编辑与处理1.1实验内容及目的1.1.1实验内容1.1.2实验目的1.2实验方案1.3操作流程1.3.1环境设......
  • 20241122电路板维修入门之集成块焊接篇
    在没有热风焊台的情况下,也可考虑用烙铁配合焊锡来拆除或焊接集成块,它的方法是用烙铁在芯片的各个引脚都堆满焊锡,然后用烙铁循环把焊锡加热,直到所有的引脚焊锡都同时熔化,就可以把芯片取下来了。把芯片从电路板上取下来,可以考虑用细铜丝从芯片的引脚下穿过,然后从上面用手提起。......
  • 20241121电路板维修入门之CPU断针焊接篇
    CPU断针的情况很常见,370结构的赛扬一代CPU和P4的CPU针的根部比较结实,断针一般都是从中间折断,比较容易焊接,只要在针和焊盘相对应的地方涂上焊膏,上了焊锡后用烙铁加热就可以焊上了,对于位置特殊,不便用烙铁的情况可以用热风焊台加热。赛扬二代的CPU的针受外力太大时往往连根拔起,且......
  • C语言_入门例题_PAGE1
    入门例题在屏幕上输入一行信息#include<stdio.h>intmain() { printf("ThisisaCprogram.\n"); return0; }求两个整数之和#include<stdio.h>intmain() { inta,b,sum; a=123; b=456; sum=a+b; printf("sumis%d\n",sum);//%d是指定输......