shell-的特殊变量-进程状态变量$$ $? $_详解

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

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

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

[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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值