Linux   发布时间:2022-04-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了linux – 不支持进程替换大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

概述

在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

在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和tail.问题在于过程替换问题:<(...) 有人可以告诉我这里有什么不同吗?="" [编辑]="" 谢谢你的回答!="">认使用sh,但我现在将其更改为bash.
我无法做正常管道的原因是当使用tail -F |时grep -q –line-buffered,grep不会在匹配后立即退出.必须再对文件进行一次编辑,例如echo“”>> catalina.out,这在我的情况下是不可接受的.

最佳答案
语法<>支持. 对于任何POSIX shell,请使用以下方法

sh -c 'tail -n 1000 -F catalina.out | if grep -qP --line-buffered ".+" ; then ...'

即使用管道移动if前面的stdin重定向. if会将stdin传递给grep.

如果尾… | grep将无法工作,因为if将无法看到它/ fi,因为管道分离进程.

大佬总结

以上是大佬教程为你收集整理的linux – 不支持进程替换全部内容,希望文章能够帮你解决linux – 不支持进程替换所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: