
shell脚本之教你如何获取上一条命令的内容及结果
发布日期:2021-05-28 17:11:57
浏览次数:26
分类:精选文章
本文共 1260 字,大约阅读时间需要 4 分钟。
应用场景
在之前的调试过程中,我们可能遇到过如下问题:当使用命令-x
参数进行调试时,只能知道命令执行是否成功,但无法知道具体执行了什么命令。虽然通过这种方式可以快速定位问题,但因为输出的字符过多,视觉效果不够友好,这就让我们感到有些麻烦。因此,我们是否可以记录每一条命令的具体内容及其执行结果呢?假设我们已经知道命令执行是否成功,但却不知道具体运行的是什么命令,这会带来什么问题呢?让我通过例子来说明。 实现方法
为了实现这一目标,我们可以编写一个简单的脚本模板。这个脚本模板的核心思想是在每条命令执行前记录命令本身,以及执行结果。这样,当我们需要回溯问题时,直接查看记录就可以清楚地知道问题出在哪一步。脚本模板
下面是一个简单的脚本模板,该脚本接收命令作为参数并执行:#!/bin/bashincr() { echo -e "\n swamp=$(date +'%Y%m%d_%H%M%S') $1" >> /tmp/log $1 > /dev/null if [[ "$?" -eq "0" ]]; then echo -e "执行的命令: [$1] executives: success" else echo -e "执行命令: [$1] executives: failure" fi}
脚本的逻辑非常简单:
- 首先,脚本会记录当前的时间戳和命令内容到
/tmp/log
文件中。 - 将执行结果通过标准错误输出到
/dev/null
,这样可以避免混杂结果.log文件中干扰信息。 - 如果命令成功(即返回值为0),则记录“成功”;否则记录“失败”。
执行结果
让我们来看一下实际执行效果:#!/bin/bashincr() { echo -e "\n $(date +'%Y%m%d_%H%M%S') $1" >> /tmp/log $1 > /dev/null if [[ "$?" -eq "0" ]]; then echo -e "执行的命令: [$1] 执行结果: 成功" else echo -e "执行命令:[$1] 执行结果: 失败" fi}echo "第一条命令" cmd "ip a" echo "第二条命令" cmd "rm -f dd" echo '第三' cmd 'sd'
通过运行上述脚本可以看到以下结果:
[root@controller ~]# bash t第一条命令执行的命令: [ip a] 执行结果: 成功第二条命令执行的命令: [rm -f dd] 执行结果: 成功第三t: 行2: sd: 未找到命令执行命令:[sd] 执行结果: 失败
从结果可以看出,两个命令正确执行了,而第三个命令因为sd
命令不存在而失败。
这样处理后,不仅可以清晰地知道每条命令的具体内容,还能记录是否成功。这可能是一个简单但有效的解决方案。如果你对脚本还有其他要求,随时告诉我。
发表评论
最新留言
路过按个爪印,很不错,赞一个!
[***.219.124.196]2025年04月30日 00时51分40秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
kafka+storm+hbase整合试验(Wordcount)
2019-03-14
VMware克隆虚拟机后重启network失败
2019-03-14
Hbase压力测试
2019-03-14
StreamReader & StreamWriter
2019-03-14
C#中的类、方法和属性
2019-03-14
Python爬取清朝末年医书:《醉花窗医案》,看看病症情况
2019-03-14
Python爬虫训练:爬取酷燃网视频数据
2019-03-14
Python数据分析入门(十九):绘制散点图
2019-03-14
大佬谈接口自动化,我是这样做测试框架开发的……
2019-03-14
C++版浙大PAT乙级1069(20分)测试点3答案错误解决方法
2019-03-14
hive内部错误
2019-03-14
Error:scalac: bad option: '-make:transitive'
2019-03-14
微软xp壁纸rgb
2019-03-14
浏览器刷新页面
2019-03-14
代码错误信息,微信报错
2019-03-14
easyui日期处理(开始时间和结束时间)
2019-03-14
java文件上传
2019-03-14
Callable中call方法和Runnable中run方法的区别
2019-03-14
【蓝桥杯】 java 大学c组 省赛 1、隔行变色
2019-03-14