如何shell脚本中,执行一个其他程序的命令,然后保存这个执行这个命令的结果和过程?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何shell脚本中,执行一个其他程序的命令,然后保存这个执行这个命令的结果和过程?相关的知识,希望对你有一定的参考价值。

是这样的,我在写一个shell的脚本。在这个脚本里,我需要不断的去开启或关闭一个程序。我在脚本里使用了,例如:abc_stop这样的命令去执行,我想能不能保存这个命令执行的过程和执行的结果?
请大家帮帮忙,谢谢了!O(∩_∩)O

参考技术A sh -x abc_stop | tee abc.log

sh -x 调试脚本执行过程

tee abc.log 读取标准输入的数据,并将其内容输出成abc.log文件追问

不行,我是这样写的
#!/bin/bash
#v1.0
PATH=环境变量
export PATH
cd /home/abc
. ./abc.sh/*设置abc这个软件的工作环境*/
sh -x abc_stop | tee abc.log
结果是能够执行abc_stop,这条命令的执行过程也显示出来了,但是没有保存abc.log

追答

那就这样。以下两句功能一样。把标准输出和错误输出到abc.log

sh -x abc_stop >abc.log 2>&1 #这种写法适用于任何bash shell
sh -x abc_stop &>abc.log #一般旧的bash shell不能这么写。你自己测吧

追问

还是不行,谢谢了。

如何在shell脚本中,判断一个基本命令执行是不是成功

每一条基本命令执行后都有一个返回码,该返回码是用$?表示,执行成功的返回码是0,例如:

if [ $? -ne 0 ];then
上一命令执行失败时的操作

else
上一命令执行成功时的操作
fi
参考技术A echo $? # 0:正确执行;非0表示其它错误 参考技术B 看看你的用户的默认shell是什么
就是/etc/password的最后一列
root:x:0:0:root:/root:/bin/bash
然后在shell脚本第一行就写上什么shell
#!/bin/bash
参考技术C 输入 mkdir /home/testuser 通过返回结果,我可以看到执行是否成功
但是如果这个mkdir在脚本中,我如何知道 mkdir 是否执行成功?
因为我这里需要有个判断,如果成功了,我就做A事;如果没有成功,我就做B事

以上是关于如何shell脚本中,执行一个其他程序的命令,然后保存这个执行这个命令的结果和过程?的主要内容,如果未能解决你的问题,请参考以下文章

如何在shell脚本中执行cd命令

如何在shell中调SQLPLUS 执行SQL语句

如何延迟 shell 脚本中的命令替换?

在c\c++程序里怎么执行shell脚本命令?

Linux下如何执行Shell脚本

shell编程中,如何将编写的脚本把其脚本名当做shell命令来使用