此命令不会向 file2 输出任何内容:
#!/bin/bash
echo content > file1
tail -f file1 | perl -pe '$_' > file2
虽然这些命令工作正常:
tail -f file1 > file2
tail -f file1 | perl -pe '$_'
tail file1 | perl -pe '$_' > file2
tail -f /tmp/file1 | while read line; do echo $line | perl -pe '$_' > /tmp/file2 ; done
有人知道发生了什么吗?
最佳答案
perl
检测到 stdout 不是终端。为了提高效率,它会一直等到有完整的数据 block 要写入。由于您没有提供更多数据,它不会写入任何内容,直到 tail
退出并且程序可以完成。
您可以 enable autoflushing使用$|++
:
tail -f file1 | perl -pe '$|++; $_' > file2
关于bash - 尾-f 文件1 | perl -pe '$_' > file2 不向 file2 输出任何内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49500770/