linux系统预定义变量有哪些,Shell预定义变量用法详解

预定义变量是在 Shell 一开始时就定义的变量,这一点和默认环境变量有些类似。不同的是,预定义变量不能重新定义,用户只能根据 Shell 的定义来使用这些变量。

严格来说,位置参数变量也是预定义变量的一种,知识位置参数变量的作用比较统一,所以我们把位置参数变量单独划分为一类数量。

那么,预定义变量有哪些呢?我们通过表 1 来说明一下。

表 1 预定义变量

预定义变量

作 用

$?

最后一次执行的命令的返回状态。如果这个变量的值为 0,则证明上一条命令正确执行;如果这 个变量的值为非 0 (具体是哪个数由命令自己来决定),则证明上一条命令执行错误

$$

当前进程的进程号(PID)

$!

后台运行的最后一个进程的进程号(PID)

我们先来看看"$?"这个变量,看起来不好理解,还是举个例子吧,如下:

[root@localhost sh]# ls

count.sh hello.sh parameter2.sh parameter.sh #ls命令正确执行

[root@localhost sh]# echo $?

0

#预定义变量"$?"的值是0,证明上一条命令正确执行

[root@localhost sh]# ls install.log

ls:无法访问install.log:没有那个文件或目录

#当前目录中没有instal.log文件,所以ls命令报错了

[root@localhost sh]# echo $?

2

#变量"$?"返回一个非0的值,证明上一条命令没有正确执行

#至于错误的返回值到底是多少,是在编写ls命令时定义好的,如果碰到文件不存在就返回数值2

这里需要用到进程号(PID)的概念,我们会在后续章节详细介绍。这里大家可以理解为在系统中每个进程都有 HD,我们把这个 ID 称作 PID,系统是通过 PID 来区分不同的进程的。

接下来说明一下"$$"和"$!"这两个预定义变量,写一个脚本如下所示:

[root@localhost sh]# vi variable.sh

#!/bin/bash

echo "The current process is $$"

#输出当前进程的PID

#这个PID就是variable.sh脚本执行时生成的进程的PID

find /root -name hello.sh &

#使用find命令在/root目录下査找hello.sh文件

#符号"&"的意思是把命令放入后台执行

echo "The last one Daemon process is $!"

#输出这个后台执行命令的进程的PID,也就是输出find命令的PID

执行一下这个命令:

[root@localhost sh]# chmod 755 variable.sh

#赋予执行权限

[root@localhost sh]#./variable.sh

The current process is 26970

#脚本variable.s执行时,PID是26970

The last one Daemon process is 26971

#find命令执行时,PID是26971

这里需要注意的是,不论是脚本 variable.sh,还是 find 命令,一旦执行完毕就会停止,所以使用 ps 命令是查看不到这两个进程号的。

一般情况下使用"$?"变量来判断上一条命令是否正确执行,我们后面要讲的test测试命令也是通过"$?"变量来判断上一条命令是否正确执行的。使用"$$"变量来给临时文件命名,以保证临时文件名不会重复。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值