• 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

    完毕!

  • 相关阅读:
    未来市场对Java的需求高吗?
    el-tree 获取过滤后的树结构
    TCP协议之《Pacing功能》
    实验6 8255并行接口实验【微机原理】【实验】
    react hook
    【基础教程】Matlab生成阴影 Rician 随机数
    NX二次开发-通过点击按钮来控制显示工具条
    【vue3】element-plus,Checkbox-Group多选框之绑定选中数据,数据不显示选中问题
    Oracle绑定SQL执行计划
    电力电子转战数字IC20220820day65——uvm实战1B
  • 原文地址:https://blog.csdn.net/IT_ZRS/article/details/125890277