zoukankan      html  css  js  c++  java
  • shell-的特殊变量-进程状态变量$$ $! $? $_详解

    一:shell的特殊变量-进程状态变量详解
      1. 进程状态变量

    $$   获取当前shell的进程号(pid)
    $!    执行上一个指令的pid,上一个后台运行进程的进程号
    $?   获取执行上一个指令的返回值(0为成功,非零为失败)
    $_    在此之前执行的命令(上一个命令)或脚本的最后一个参数

      举例(通过脚本举例,)
      范例:举例$$

    范例1:举例$$
    [root@1-241 scripts]# echo $$
    76037
    [root@1-241 scripts]# ps -ef |grep 76037
    root      76037  76035  0 05:26 pts/1    00:00:00 -bash
    范例2:举例$$
    [root@1-241 scripts]# cat 2.sh 
    echo $$ >/scripts/a.log
    while true
    do
       uptime
       sleep 2
    done
    [root@1-241 scripts]# cat a.log 
    76918
    [root@1-241 scripts]# ps 76918
       PID TTY      STAT   TIME COMMAND
     76918 pts/1    S+     0:00 sh 2.sh
    

       范例1:举例$?

    [root@1-241 scripts]# jjklk
    -bash: jjklk: command not found
    [root@1-241 scripts]# echo $?
    127
    [root@1-241 scripts]# echo $?
    0
    提示:
    $?:相当有用,是判断上一个命令是否执行成功
    

      2. $?返回值参考  

    0                      表示运行成功
    2                      权限拒绝
    1~125              表示运行失败,脚本命令、系统命令错误或参数传递错误
    126                 找到该命令了,但是无法执行
    127                 未找到要运行的命令
    >128              命令被系统强制结束
    提示:
    在脚本调用,一般用exit 0,函数retrun  0。
    

     3. 举例(通过脚本举例,大家也可以一行行执行测试):

    [root@1-241 scripts]# cat all.sh 
    echo '$0  获取当前执行的shell脚本的文件名:' $0
    echo '$n  获取当前执行的shell脚本的第n个参数值,n=1..9:' '$1'=$1 '$2'=$2 "$3=$3"
    echo '$*  获取当前shell的所有参数 , $1 $2 $3 ....注意与$#的区别:' $*
    echo '$#  获取当前shell命令行中参数的总个数:' $#
    echo '$$  获取当前的shell的进程号(PID):' $$
    sleep 2 &
    echo '$! 执行上一个指令的PID:' $!
    echo '$? 获取执行的上一个指令的返回值:' $?
    echo '$@ 这个程序的所有参数 “$1” "$2" "$3" "...":' $@
    echo '$_ 在此之前执行的命令或脚本的最后一个参数:' $_
    

     执行结果:

    $0  获取当前执行的shell脚本的文件名: all.sh
    $n  获取当前执行的shell脚本的第n个参数值,n=1..9: $1=aa $2=bb $3=cc
    $*  获取当前shell的所有参数 , $1 $2 $3 ....注意与$#的区别: aa bb cc
    $#  获取当前shell命令行中参数的总个数: 3
    $$  获取当前的shell的进程号(PID): 77147
    $! 执行上一个指令的PID: 77148
    $? 获取执行的上一个指令的返回值: 0
    $@ 这个程序的所有参数 “$1” "$2" "$3" "...": aa bb cc
    $_ 在此之前执行的命令或脚本的最后一个参数: cc
    

      

     

     

  • 相关阅读:
    IO多路复用--epoll(待学习)
    网络信息检索
    TCP协议的客户端与服务器的通信过程
    UDP网络编程
    HDU_oj_2017 字符串统计
    HDU_oj_2016 数据的交换输出
    HDU_oj_2015 偶数求和
    HDU_oj_2014 评委会打分
    HDU_oj_2013 蟠桃记
    HDU_oj_2012 素数判定
  • 原文地址:https://www.cnblogs.com/scajy/p/12762320.html
Copyright © 2011-2022 走看看