Shell 预定义变量 ($0、$$、$?、$#、$* 含义)

681 阅读1分钟
  • 什么是 预定义变量 ?

    • 可以直接使用这些变量。

    • 不能直接为这些变量赋值。

    变量名含义
    $0当前所在的进程或脚本名
    $$当前运行进程的 PID
    $?获得上一条命令的执行状态,跟上上条命令无关,0 表示正常,1其他值 表示异常
    $#已加载的位置变量的个数,也就是执行脚本时,后面跟的参数个数
    $*所有位置变量的值,也就是执行脚本时,后面跟的参数
  • $? 举例:

    // 运行正常
    $ ls
    test.sh
    $ echo $?
    0
    
    // 运行异常
    $ ls dzm.txt
    ls: dzm.txt: No such file or directory
    $ echo $?
    1
    
  • 综合举例

    # 脚本内容
    echo $0
    echo $$
    echo $?
    echo $#
    echo $*
    
    $ sh test.sh aa bb cc
    test.sh
    33616
    0
    3
    aa bb cc