命令,怎样做到及时的获取shell命令输出内容

命令,怎样做到及时的获取shell命令输出内容,第1张

其实,并不是你想的那样,因为testpy,也不是实时输出,只有在每次输出,清空一下stdout才能看到你想看到的效果。

testpy

import sysimport timefor i in range(1,10): print i sysstdoutflush() timesleep(1)

import subprocesssubp=subprocessPopen('python testpy',shell=True,stdout=subprocessPIPE)c=subpstdoutreadline()while c: print c c=subpstdoutreadline() print subpreturncode

这样,你观察很明显,如果你将sysstdoutflush(),删除,你会发现都是最后一刻才输出,因为print时代缓冲的。

不太明白你表达的意思,是无法看到错误信息还是想保存错误信息?

1、一般来讲,shell命令都是有错误输出的,它会打印在屏幕上,但实际上是标准错误输出文件,如果我不想输出到屏幕,而是写到文件里,我们可以用管道符'>'重定向标准错误输出,比如:

我cat一个不存在的文件,会有错误输出,我可以把错误重定向到文件里

#cat /tmp/aa

cat: /tmp/aa: No such file or directory

#cat /tmp/aa 2>errlog

#cat errlog

cat: /tmp/aa: No such file or directory

2表示标准错误输出。

另外,我甚至可以把错误输出放到shell变量里:

#aa=$(cat /tmp/aa 2>&1)

#echo $aa

cat: /tmp/aa: No such file or directory

2>&1表示,我把错误输出重定向到标准屏幕输出1上,在赋值给变量aa

2、关于如何调试shell脚本

很简单

#sh -vx xxxxsh

上述命令会打印shell脚本的执行过程和结果,有助于排错。当然,某些情况下,可能不会有输出(如shell中有函数,可能就不会输出函数里的过程)。

shell脚本里$0代表程序名,$1代表命令行传来的第一个位置参数,$2代表代表命令行传来的第二个位置参数,同理类推。

例如

#!/bin/bash

echo "程序名:$0"

echo "参数1:$1"

$sh testsh 1111

输出结果为:

程序名: testsh

参数1:1111

以上就是关于命令,怎样做到及时的获取shell命令输出内容全部的内容,包括:命令,怎样做到及时的获取shell命令输出内容、如何获取shell命令输出的错误信息、shell程序中怎么获取调用参数等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9407056.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-28
下一篇 2023-04-28

发表评论

登录后才能评论

评论列表(0条)

保存