首页 > 系统相关 >Shell特殊参数变量

Shell特殊参数变量

时间:2024-01-02 14:11:21浏览次数:28  
标签:脚本 Shell 变量 1.2 区别 引号 参数

1.Shell变量

  1.1.本地变量

    定义shell变量,变量不需要加美元符`$`

    本地变量只在用户当前shell生存期中有效,如:

  1.2.变量定义

    1.2.1 变量名要求:字母、数字、下划线组成、可以是字母或是下划线开头,如:

      wayne

      wayne_123

      _wayne_123

    1.2.2 变量名严格区分大小写:

      Way_ne

      way_ne

    1.2.3 取出变量值:

      单引号,所见所得,强引用

      双引号,输出引号里所有内容,识别特殊符号,弱引用

      无引号,连续的符号可以不加引号,有空格则有歧义,最好使用双引号

      反引号,引用命令执行结果,等于 $() 用法

    1.2.4 特殊变量:

      shell的特殊变量,用在如脚本,函数传递参数使用,有如下特殊的,位置参数变量

      参数传递,案例:

  位置参数的获取演示:

    $0  获取she11脚本文件名,以及脚本路径
    $n  获取shel1脚本的第n个参数,n在1~9之间,如$1 $2,$9 ,大于9则需要写,$(10],参数空格隔开
    $#  获取执行的she11脚本后面的参数总个数

    $*   获取shel1脚本所有参数,不加引号等同于$@作用,加上引号"$*"作用是 接收所有参数为单个字符串,"$1 $2..
    $@  不加引号,效果同上,加引号,是接收所有参数为独立字符串,如”$1”“$2”"$3" 。..,空格保留

 

$*和$@的区别:

  1.$* 和$@ 都表示传递给函数或脚本的所有参数

    当$* 和 $@ 不被双引号 " "包围时,他们之间没有任何区别,都是将接受到的每个参数看做一份数据,彼此之间以空格来分隔。

    当$* 和 $@ 被双引号 " "包围时,就会有区别的:
      区别1:"$*"会将所有的参数从整体上看做一份数据,而不是把每个参数都看做一份数据。

      结果1:"Wanye wxl 100 200 300 400"

      区别2:"$@"仍然将每个参数都看做一份数据,彼此之间是独立的。

      结果2:

        "Wanye"

        "wxl"

        "100"

        "200"

        "300"

        "400"

      案例:

        比如传递5个参数,对于"$*"来说,这5个参数会合并到一起形成一份数据,他们之间是无法分割的;对于"$@"来说,这5个参数是互相独立的,他们是5份数据。

        如果直接用echo直接打印"$*"和"$@"做对比,是看不出区别的;但是如果使用for循环来逐个输出数据,立即就看出区别

      实践"$*" 和"$@" 的区别:

        反斜杠“\”,是转义符号的概念

        "$*"和"$@"分别实行for循环输出的结果:

标签:脚本,Shell,变量,1.2,区别,引号,参数
From: https://www.cnblogs.com/vless/p/17940360

相关文章

  • 如何用 100 行 Shell 脚本实现一个 Docker?
    本文主要介绍使用shell实现一个简易的Docker。一、目的在初接触Docker的时候,我们必须要了解的几个概念就是Cgroup、Namespace、RootFs,如果本身对虚拟化的发展没有深入的了解,那么很难对这几个概念有深入的理解。本文的目的就是通过在操作系统中以交互式的方式去理解,Cgroup/Namesp......
  • 2023NCTFcheck题解-关于可视化shellcode以及AE64真香
    以后我会尽量少用图片,因为我经常在翻别人博客时发现图片加载不出来,很烦。看看checksec再看看IDAint__cdeclmain(intargc,constchar**argv,constchar**envp){__int64v3;//rbx__int64v4;//rbx__int64v5;//rbxunsigned__int64v7;//[rsp+8h][rbp-2......
  • 鸿蒙自定义弹窗中的变量如何传递给页面
    鸿蒙自定义弹窗中的变量如何传递给页面作者:坚果团队:坚果派公众号:“大前端之旅”团队介绍:坚果派由坚果创建,团队拥有8个华为HDE,3个HSD,以及若干其他领域的三十余位万粉博主运营。本人为华为HDE、中国计算机学会CCF专业会员、OpenHarmony布道师、开发者联盟优秀讲师、2023年开源之夏......
  • wustctf2020_getshell
    wustctf2020_getshellret2shell在vulnerable函数中存在溢出漏洞shell函数中已经预留了后门溢出->跳转到后门函数frompwnimport*context.log_level='debug'elf=ELF('wustctf2020_getshell')io=process('wustctf2020_getshell')payload=b'A�......
  • Oracle中查看隐含参数的sql
    selecta.ksppinm"Parameter",a.ksppdesc"Description",b.ksppstvl"SessionValue",c.ksppstvl"InstanceValue"fromx$ksppia,x$ksppcvb,x$ksppsvcwherea.indx=b.indxanda.indx=c.indxanda.ksppinmlike'%hb......
  • Microsoft 365 开发:如何通过PnP Powershell批量删除文件夹或文件等
    51CTOBlog地址:https://blog.51cto.com/u_13969817通常删除文件夹可以在UI界面操作比较方面,但是如果想快速的删除文件夹以及其childfolder,该如何操作呢?解决方案:本文将介绍如何使用PnPPowerShell脚本删除SharePoint文档库中的文件夹:第一步是通过运行cmdlet:ConnectPnPOnline来......
  • Python趣味入门13:类中的各种变量
    小牛叔带你飞越类的门槛其中我们已知道定义变量在类中就表示为属性。但是在不同的位置定义变量会有不同的作用,并且采用不同的命名方式,也会让变量具有不同的作用本文假设有一个类指南针(compass),可想象成某个地图游戏中帮助主角寻找方向,也是本节主要的示例。1.类属性与实例属性c......
  • Microsoft 365开发:如何通过Graph Powershell推动密码过期邮件提醒
    51CTOBlog地址:https://blog.51cto.com/u_13969817密码过期提醒是一种安全措施,用于确保用户定期更改其密码,以减少密码被盗用的风险。当用户密码过期时,系统发送提醒通知,告知需要更改密码。这种提醒通常可以以电子邮件、系统通知的方式发送给用户,提醒中通常包含有关如何更改密码的提......
  • Microsoft 365开发:如何使用Powershell将单个或者多个用户邮箱转换为共享邮箱
    51CTOBlog地址:https://blog.51cto.com/u_13969817Office365是一个基于云的平台,提供了一套生产力工具,包括电子邮件、日历和文件共享。随着员工数量的增加和团队合作的需要,企业管理员经常会将个人邮箱转换为共享邮箱,其好处是:·      共享邮箱可以方便团队成员之间的邮件交......
  • Microsoft 365 新功能速递:如何用Powershell为SPO文件夹设置不同颜色
    51CTOBlog地址:https://blog.51cto.com/u_13969817微软最近推出了一项新功能,允许用户在SharePointOnline和OneDrive中使用预设的16种颜色为文件夹上色。此功能适用于新文件夹和现有文件夹。现在,用户可以使用不同的颜色自定义文件夹,以便更好地管理文件,比如:·      提供工作......