Linux - 将shell脚本重定向到文本文件

时间:2018-03-26 16:02:11

标签: linux shell

我是Linux的新手,并且一直试图解决一项任务,但无济于事。

我有一个shell脚本,它以某种方式打印出文本文件的行(每隔几秒就有一行):

    python << END

import time,random
a= open ('/home/ch/pshety/course/fielding_history.txt','r')
flag =False
for i in range(1000):
   b=a.readline()
   if i==402 or flag:
       print(a.readline())
       flag=True
       time.sleep(2)

END

sh th.sh

如果我在不尝试将其重定向到任何地方的情况下运行它,我会在终端上获得输出。但是,当我尝试将其重定向到新的文本文件时,它没有做任何事情 - 文本仍为空:

sh th.sh > debug.txt

我已经尝试过寻找答案,我偶然发现了很多建议,包括tee,但没有任何帮助 - 文件仍然是空的。

我做错了什么?

1 个答案:

答案 0 :(得分:0)

试试这个:

import time,random
a = open('/home/ch/pshety/course/fielding_history.txt', 'r')

for i in range(1000):
   b = a.readline()
   if i >= 402:
       print(b, flush=True)
       time.sleep(2)

您的Python脚本可能需要先刷新输出缓冲区的内容才能看到它。

注意:除了sleep()调用之外,Unix还提供了其他方法来完成此任务。我会看一下man tail并阅读有关-f-n开关的内容。

编辑:没有意识到tail还有一个开关(-s)也可以睡觉!