• Shell 脚本特殊变量列表


    shell
    Author:rab


    记了千百遍,也还没能记住的可以来看看了,走过路过的也可以来瞄一眼😉,这几个 shell 脚本特殊变量你都能分得清吗?

    变量释义
    $0获取当前执行脚本名称。如:sh ./hello.sh 那该变量值就是 ./hello.sh
    $#获取传递给脚本或函数的参数个数(数)
    $*获取传递给脚本或函数的所有参数(值)-- 以空格分隔
    $@获取传递给脚本或函数的所有参数(值)-- 以空格分隔
    $n获取传递给脚本或函数的参数(值)。如:sh hello.sh aa bb$1变量值就是 aa$2变量值就是 bb
    #?获取上一个命令或函数的退出状态。成功:0 失败:非0
    $$获取当前执行脚本的进程 PID

    注意❗️❗️❗️

    这里注意一下 $* 和 $@ 的区别 ,在没有被双引号(" ")的情况下,两者取值完全相同,但有双引号的情况下,就需要注意:

    • 无双引号:两者没区别,都是以 "$1" "$2" ... "$n" 的格式输出。

      # 例如
      sh hello.sh aa bb cc
      
      # $* 和 $@ 的输出
      $*:aa bb cc
      $@:aa bb cc
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
    • 有双引号:两者有区别,"$*" 输出格式为 "$1 $2 ... $n",即为一个整体输出。"$@" 输出格式则与无双引号时保持不变。

      # 例如
      sh hello.sh aa bb cc
      
      # $* 和 $@ 的输出(看起来是一样的,但是"$*"的值是一个整体,也就是aa bb cc就是带有空格的一个值,而"$@"则是以空格分开的三个独立值)
      "$*":aa bb cc
      "$@":aa bb cc
      
      ================================
      # 如果你使用一个 for 循环来取值
      for i in "$*"
      do
          echo $i
      done
      for i in "$@"
      do
          echo $i
      done
      
      # $* 和 $@ 的输出("$*"只循环一次,因为它只有一个值,而"$@"却循环了三次,因为它有三个值)
      "$*":aa bb cc
      "$@":
          aa 
          bb 
          cc
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
      • 14
      • 15
      • 16
      • 17
      • 18
      • 19
      • 20
      • 21
      • 22
      • 23
      • 24

    完毕!

  • 相关阅读:
    Groovy4的新特性概览
    浅谈免杀下的持久化
    gRPC(Java) keepAlive机制研究
    Flink之Watermark生成策略
    WPF实现右键菜单
    易点易动库存管理系统:引领库存用量控制新时代,助力企业节约成本
    SAP 重复制造简介
    Java SPI
    MySQL数据库安装步骤(图文)
    JAVA:实现Pow函数功能算法(附完整源码)
  • 原文地址:https://blog.csdn.net/IT_ZRS/article/details/125890277