『忘了再学』Shell基础 — 17、预定义变量
2022-05-24 11:00
1861 查看
[toc]
我们之前说过,Shell中的变量不是按照变量值的类型来进行分类的,而是按照Linux系统中定义的变量类别来分类的。
预定义变量就是,事先把变量的名称和作用确定好(都是不可变的),只能修改变量的内容,也就是变量的值。
其实预定义变量和位置参数变量都可以统称为预定义变量(有分开说明的,也有一起说明的,知道就行)。
预定义变量如下:
预定义变量 | 作用 |
---|---|
$? |
$?中存的值,是最后一次执行的命令的返回状态。 如果这个变量的值为0,证明上一个命令正确执行; 如果这个变量的值为非0(具体是哪个数,由命令自己来决定), 则证明上一个命令执行不正确了。(常用) |
$$ |
当前进程的进程号(PID)。 |
$! |
后台运行的最后一个进程的进程号(PID)。 |
1、预定义变量$?
$?这个预定义变量,在我们写Shell脚本的时候,还是比较常用。
我们下边来写一个例子进行说明。
# 执行ls命令 # ls命令正确执行 [root@Lyl tmp]# ls count.sh for.sh parameter.sh param.sh # 预定义变量"$?"的值是0,证明上一个命令执行正确, # "$?"记录的是在执行"$?",或者值查询"$?"之前, # 最后一条命令的执行返回状态。 [root@Lyl tmp]# echo $? 0 # 当前目录中没有install.log文件,所以ls命令报错了。 [root@Lyl tmp]# ls install.log ls: 无法访问install.log: 没有那个文件或目录 # 变量"$?"返回一个非0的值,证明上一个命令没有正确执行, # 至于错误的返回值到底是多少,是在编写ls命令时定义好的, # 如果碰到文件不存在就返回数值2。 [root@Lyl tmp]# echo $? 2 # 输出错误命令的时候,命令状态返回值一般都是127。 [root@Lyl tmp]# adfasdf -bash: adfasdf: command not found [root@Lyl tmp]# echo $? 127
预定义变量$?
的常用使用方式:
比如在写一个脚本的时候,要判断
apache服务是否在运行。
有很多种实现方式,
比如搜索Linux系统中是否有
apache服务的进程
id号,如果能找到,
$?的返回值为0,就确认了
apache服务正在运行。
如果
$?值不等于0,则证明
apache服务没有启动。
有一个例子,我们前边在说Bash多命令顺序执行的时候,文章如下:
https://www.geek-share.com/detail/2859718100.html
判断的条件就是
$?=0。
2、预定义变量$$
和$!
预定义变量
$$和
$!,在实际工作中用的不多,了解一下。(但是都要记住)
Linux系统下的进程是依赖进程的
id号进行区分的,叫做
pid,也就是进程
id。
# 定义一个脚本variable.sh [root@Lyl tmp]# variable.sh # 脚本内容如下: #!/bin/bash # 输出当前进程的PID。 # 这个PID就是variable.sh这个脚本执行时,生成的进程的PID。 echo "The current process is $$" # 使用find命令在root目录下查找hello.sh文件 # 符号&的意思是把命令放入后台执行。 find /root -name hello.sh & # 输出这个后台执行命令的进程的PID, # 也就是输出find命令的PID号 echo "The last one Daemon process is $!"
提示:将命令放入后台执行,请查看文章:https://www.geek-share.com/detail/2850980600.html。
相关文章推荐
- Shell基础-Bash变量-预定义变量
- Shell基础之Bash的变量——变量概述、自定义变量(本地变量)、环境变量、位置参数变量、预定义变量(预定义变量和接收键盘输入)
- Linux学习日记 —— 10.4.4 Shell基础-Bash变量-预定义变量
- shell基础-bash变量-预定义变量
- shell基础—变量定义及数值计算
- linux——Shell 脚本基础篇(变量类型,变量操作,定义,运算与逻辑关系)
- shell基础——变量定义
- Shell编程基础语法(上篇)变量,位置参数,预定义变量,运算符
- 黑马程序员--Java基础加强--17.利用反射操作泛型VI【泛型类型变量的语义】【GenericDeclaration接口】【泛型接口TypeVariable】【通过Class反射解析泛型类】
- linux脚本明明定义了变量,但是引用的时候报错(原因:shell定义变量的时候,“等号”两边不要加空格)
- shell 入门(1) 变量定义
- Shell变量和基础知识(二)
- Shell脚本基础 、 使用变量 、 条件测试及选择 、 列表式循环
- shell 定义变量 坑
- Shell变量:Shell变量的定义、删除变量、只读变量、变量类型
- L24 shell基础知识(二)管道符-作业控制-shell变量-环境变量配置文件
- Shell基础教程,什么是Shell?Shell脚本的执行方式,Shell中的变量,Shell中的特殊变量
- Shell变量:Shell变量的定义、删除变量、只读变量、变量类型
- Linux学习(二十二)Shell基础(二)变量、环境变量配置文件
- JavaScript中基础变量和数据类型的定义