码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • shell中的特殊变量


    【原文链接】shell中的特殊变量

    文章目录

      • 1 特殊变量 $n
      • 2 特殊变量 $#
      • 3 特殊变量$*
      • 4 特殊变量$@
      • 5 特殊变量$?

    1 特殊变量 $n

    $n,n为数字,n为0-9,$0 代表脚本名称,$1- 9 代 表 第 一 到 第 九 个 参 数 , 9 以 上 的 参 数 需 要 使 用 大 括 号 , 如 9代表第一到第九个参数,9以上的参数需要使用大括号,如 9代表第一到第九个参数,9以上的参数需要使用大括号,如{10}表示第10个参数,比如如下,创建test.sh脚本文件,脚本如下,即打印脚本名本身,以及第一个、第二个和第三个参数

    #!/bin/bash
    echo $0
    echo $1
    echo $2
    echo $3
    
    • 1
    • 2
    • 3
    • 4
    • 5

    用如下的方式执行,可以看出符合我们的预期

    $ bash test.sh hahah 2 100
    test.sh
    hahah
    2
    100
    $
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    2 特殊变量 $#

    $# 为获取所有输入参数的个数,如下,在test.sh脚本文件中写入如下内容,即打印参数的个数

    #!/bin/bash
    
    echo $#
    
    • 1
    • 2
    • 3

    使用如下命令执行,可以看出,当不输入参数时,打印的是0,当输入三个参数时则打印3

    $ bash test.sh
    0
    $ bash test.sh 111 222 333
    3
    $
    
    • 1
    • 2
    • 3
    • 4
    • 5

    3 特殊变量$*

    ∗ 作 用 是 偶 去 命 令 行 中 所 有 的 参 数 , * 作用是偶去命令行中所有的参数, ∗作用是偶去命令行中所有的参数,* 把所有的参数看成一个整体,如下test.sh代码即为打印$*的内容

    #!/bin/bash
    
    echo $*
    
    • 1
    • 2
    • 3

    执行结果如下,可以看出将执行时输入的三个参数都打印出来了

    $ bash test.sh 111 222 333
    111 222 333
    $
    
    • 1
    • 2
    • 3

    4 特殊变量$@

    @ 作 用 是 这 个 变 量 代 表 命 令 行 中 所 有 的 参 数 , 不 过 @ 作用是这个变量代表命令行中所有的参数,不过 @作用是这个变量代表命令行中所有的参数,不过@把每个参数区分对待,如下,在test.sh中编写代码,打印$@

    #!/bin/bash
    
    echo $@
    
    • 1
    • 2
    • 3

    执行结果如下,可以看出此时同样将三个参数都打印出来了

    $ bash test.sh 111 222 333
    111 222 333
    $ 
    
    • 1
    • 2
    • 3

    5 特殊变量$?

    $? 作用是获取最后一次执行的命令的返回状态,如果这个变量的值为0,表示上一个命令执行成功,如果这个变量不是0,则证明上个命令执行错误了

    如下,当执行ls正确后, ? 的 值 为 0 , 而 当 输 入 一 个 错 误 的 命 令 时 , 此 时 ?的值为0,而当输入一个错误的命令时,此时 ?的值为0,而当输入一个错误的命令时,此时?的值是127

    $ ls
    test.sh
    $ echo $?
    0
    $ lsss
    -bash: lsss: command not found
    $ echo $?
    127
    $
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
  • 相关阅读:
    07OpenCV 图像模糊
    【代码随想录算法训练Day27】LeetCode 39.组合总和、LeetCode 40.组合总和II、LeetCode 131.分割回文串
    应遵循哪些 GitLab 备份最佳实践
    VEX —— Functions|String
    这次弄一下maven 多模块项目,用vscode新建一下,便于管理项目
    国际物流和跨境电商物流的区别
    k8s配置configmap指定到容器的指定文件
    Vue2与Vue3:深度剖析核心差异与升级亮点
    Spring Web Flow入门(带详细注释)
    大话STL第七期——stack栈
  • 原文地址:https://blog.csdn.net/redrose2100/article/details/127896420
  • 最新文章
  • 【JVM】编译执行与解释执行的区别是什么?JVM 使用哪种方式?
    用 Hashids 优雅解决 C 端自增 ID 暴露问题
    V8引擎 精品漫游指南--Ignition篇(上) 指令 栈帧 槽位 调用约定 内存布局 基础内容
    LLVM Pass快速入门(四):代码插桩
    milkup:桌面端 markdown AI续写和即时渲染
    基于项目工程构建SBOM(软件物料清单)的研究
    鸿蒙应用开发UI基础第二节:鸿蒙应用程序框架核心解析与实操
    .NET 中如何快速实现 List 集合去重?
    扣子Coze实战:从0到1打造抖音+小红书热点监控智能体
    浅谈数据访问层
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号