我正在运行一些脚本,并且在几个地方运行带有grep的cat管道,如:
xlPasteValues
大多数时候没有问题。但有时我会得到
cat:写入错误:管道损坏
那么如何找出导致此问题的cat命令以及原因?
答案 0 :(得分:5)
原因是,当grep
仍有一些数据要从cat
读取时,管道被SIGPIPE
关闭。信号cat
被cat捕获并退出。
管道中经常发生的事情是shell在一个进程中运行grep
而在另一个进程中运行cat
。 grep
的stdout连接到管道的写端和grep
的stdin到读取端。发生了什么cat
命中了一个不存在的模式搜索并立即退出,导致管道的读取结束被关闭,SIGPIPE
不喜欢,因为它有更多的数据需要写入管道。由于写入操作发生在另一端已关闭的另一端,cat
会被它立即退出的grep "pattern" file.txt
捕获。
对于这样一个简单的案例,您可以完全删除管道使用情况,并在文件的内容通过它可以读取的grep
的标准输入上获得时以A
运行它从
答案 1 :(得分:0)
您只能使用不带管道的grep,例如:
grep "pattern" file.txt
我认为最好解决这个问题