在Centos 6机器上,这可以工作:
bash -c 'if grep -qP --line-buffered ".+" <(tail -n 1000 -F catalina.out) ; then echo "yes"; fi'
这不是:
sh -c 'if grep -qP --line-buffered ".+" <(tail -n 1000 -F catalina.out) ; then echo "yes"; fi'
我得到:
sh: -c: line 0: syntax error near unexpected token `('
sh: -c: line 0: `if grep -qP --line-buffered ".+" <(tail -n 1000 -F catalina.out) ; then echo "yes"; fi'
不要介意grep和尾巴。问题在于流程替换很麻烦:<(...)
有人可以告诉我sh在这里有什么不同吗?
[编辑]
感谢您的回答!
使用 capistrano 进行部署时出现了问题。它默认使用 sh, 但是我现在将其更改为 bash
。我无法进行常规配管的原因是,使用时tail -F | grep -q --line- buffered
,grep不会在比赛后立即退出。必须对该文件再进行一次编辑,echo "" >> catalina.out
在我的情况下这是不可接受的。
该语法<(...)
仅受BASH支持。
对于任何POSIX Shell,请使用以下方法:
sh -c 'tail -n 1000 -F catalina.out | if grep -qP --line-buffered ".+" ; then ...'
即if
使用管道将stdin重定向移到的前面。该if
会传递给标准输入grep
。
if tail ...| grep
不会起作用,因为if
将无法看到它的then
/ fi
因为管道分离过程。
问题内容: 在python中,是否有一种方法可以调用一个新进程,在同一个上下文中处理它,例如标准IO流,关闭当前进程,并控制所调用的进程?这将有效地“替代”该过程。 我有一个要重复其行为的程序。但是,它使用了一个第三方库,而且看来,我真正能够杀死该库调用的线程的唯一方法是退出()我的python进程。 另外,它似乎可以帮助管理内存。 问题答案: 您可能对以下朋友感兴趣: 这些功能都执行一个新程序,
我正在将一些代码移动到Web API中,我只希望接受完美的请求(按顺序发送数据、按顺序发送所有头等),并拒绝其他请求。现在我有了它,如果一个完美的请求进来,那么它返回一个正确的输出,带有一个200 OK状态代码,如果一个错误的请求进来(也就是一个未正确欺骗的请求),那么它返回一个404 not FOUND。 我的控制器中的函数都有一个带有FromBody属性的参数,所以这意味着如果请求使用内容类型
我试图使用cv::distanceTransform()函数,但在运行时出现以下错误: OpenCV错误:cvDistTransform中不支持的格式或格式组合(源图像必须为8uC1,距离贴图必须为32fC1(或在简单L1距离变换的情况下为8uC1)), 然而,我的输入垫似乎确实是CV_8U(其类型=16,深度=0,通道=3)。我的输出垫声明为CV_32FC1。违规代码: 谢谢你的帮助!
在段落和多列表中用apache-poi替换ms word merge-fields with values。 由于docx4j提供了替换合并字段的功能,apache POI是否有任何等效的功能。由于我使用的是Docx文件中的一些自定义标记,所以在docx4j中读取该文件是在忽略自定义标记(xml格式“w:xyz”)。
我知道JPA支持流,但为了防止实体管理器占用大量内存,我必须显式地执行。 我想它应该在他们的spring-data-commons中,但是https://spring.io/projects/spring-data#learn没有任何链接,只有标签。
我试图将Spring Cloud Stream与本主题中描述的功能一起使用。但是它不起作用。 我的职能: 我推送消息。通过使用输出注释制作的生产者,发送到consumer-in-0频道: 我的yaml通道配置: 如果我通过配置使用消费者,一切正常。同样在rabbitmq管理器中,我看到生产者正在工作并发送消息,但消费者并不使用它们。帮帮我,请某人帮忙。 附言:我也使用Spring WebFlux