『忘了再学』Shell基础 — 17、预定义变量
我们之前说过,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.cnblogs.com/liuyuelinfighting/p/16082830.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.cnblogs.com/liuyuelinfighting/p/15710694.html。
『忘了再学』Shell基础 — 17、预定义变量的更多相关文章
- 『忘了再学』Shell基础 — 12、用户自定义变量
目录 1.变量定义 2.变量调用 3.变量的修改 4.查看变量 (1)-u选项说明: (2)-x选项说明: (3)set命令说明: 5.变量删除 1.变量定义 变量正确定义. 格式:变量名=" ...
- 『忘了再学』Shell基础 — 16、位置参数变量
目录 1.位置参数变量$n 2.位置参数变量$*和$@ 3.位置参数变量$# 位置參数变量的作用主要用于脚本的传参. 位置參数变量的名称和作用都是确定不能改变的,但是该变量的内容是可以更改的,也就是变 ...
- 『忘了再学』Shell基础 — 13、环境变量(一)
目录 1.用户自定义的环境变量 (1)环境变量设置 (2)查询自定义环境变量 (3)删除自定义环境变量 2.系统自带的环境变量--PATH环境变量 (1)PATH环境变量 (2)PATH环境变量的作用 ...
- 『忘了再学』Shell基础 — 14、环境变量(二)
目录 1.PS1变量的作用 2.PS1变量的查看 2.PS1可以支持的选项 3.PS1环境变量的配置 4.总结 提示: 在Linux系统中,环境变量分为两种.一种是用户自定义的环境变量,另一种是系统自 ...
- 『忘了再学』Shell基础 — 15、环境变量(三)
目录 1.LANG语系变量介绍 2.如何查看Linux中支持的语系 3.查看当前系统的语系 4.总结 提示: 在Linux系统中,环境变量分为两种.一种是用户自定义的环境变量,另一种是系统自带的环境变 ...
- 『忘了再学』Shell基础 — 11、变量定义的规则和分类
目录 1.定义变量的规则 2.变量的分类 1.定义变量的规则 在定义变量时,有一些规则需要遵守 变量名称可以由字母.数字和下划线组成,但是不能以数字开头.如果变量名是2name则是错误的. 在Bash ...
- 『忘了再学』Shell基础 — 9、Bash中的特殊符号(一)
目录 1.双单引号 2.双引号 3.$符号 4.反引号 5.$()符号 6.#符号 7.\符号 1.双单引号 '':单引号.在单引号中所有的特殊符号,如$和"`"(反引号)都没有特 ...
- 『忘了再学』Shell基础 — 3、echo命令的介绍与使用
目录 1.echo命令的作用 2.echo命令的基本用法 3.echo命令的-e选项用法 4.echo命令一些特殊用法 (1)输出字符带有字体颜色 (2)输出字符带有背景颜色 在讲Shell脚本之前, ...
- 『忘了再学』Shell基础 — 10、Bash中的特殊符号(二)
提示:本篇文章接上一篇文章,主要说说()小括号和{}大括号的区别与使用. 8.()小括号 ():用于一串命令执行时,()中的命令会在子Shell中运行.(和下面大括号一起说明) 9.{}大括号 {}: ...
随机推荐
- PowerBI添加中国地图
可以直接在添加视觉对象中添加 或者用此方法 样子: 添加形状地图地图的"位置""图例" 然后去http://datav.aliyun.com/portal/sc ...
- Queue实现
1.Queue接口: public interface Queue<E> { int getSize(); boolean isEmpty(); void enqueue(E e); E ...
- SpringMVC基础原理
1.拦截所有请求到DispatcherServlet 2.去寻找映射器 3.根据处理器适配器处理业务,返回视图 4.视图解析器解析显示视图
- HTML5+JavaScript+MUI 毕业答辩常见问题
问题1:HTML5前端开发环境有哪些? HTML5网页前端开发,实际也是HTML网页开发,HTML5知识万维网的核心语言.标准通用标记语言下的一个应用超文本标记语言(HTML)的第五次重大修改的第五次 ...
- 超详细讲解H5移动端适配
前言 移动互联网发展至今,各种移动设备应运而生,但它们的物理分辨率可以说是五花八门,一般情况UI会为我们提供375尺寸的设计稿,所以为了让H5页面能够在这些不同的设备上尽量表现的一致,前端工程师就不得 ...
- Logistic regression中regularization失败的解决方法探索(文末附解决后code)
在matlab中做Regularized logistic regression 原理: 我的代码: function [J, grad] = costFunctionReg(theta, X, y, ...
- 【大学物理实验】01 单摆测重力加速度 的 g 计算代码
单摆测重力加速度 传统摆 (代码没保存,就截了个图) 研究单摆周期与摆长之间的关系 (依旧是g的计算) 我还不太会数据拟合
- github ations 入门使用
在使用之前,我们了解一下什么是 Github Actions. 在 GitHub Actions 的仓库中自动化.自定义和执行软件开发工作流程. 您可以发现.创建和共享操作以执行您喜欢的任何作业(包括 ...
- 从压测碰到的诡异断连问题聊聊Nginx的连接管理
本文主要分享一个在压测Nginx反向代理服务过程中碰到的连接异常断开问题,包括问题的定位与复现,最后由这个实际问题引申聊一下Nginx的连接管理. 本博客已迁移至CatBro's Blog,那是我自己 ...
- WinForm中TextBox文本过长解决
方案1: 如果界面有足够的空间 可以使用Multiline属性设置多行 方案2: 可以使用文本框的MouseHover事件,触发弹窗,缺点需要按确定 private void txt_Fnote_M ...