在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.问题在于过程替换问题:<(...)有人可以告诉我这里有什么不同吗?[编辑]谢谢你的回答!使用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会将stdin传递给grep.
如果尾… | grep将无法工作,因为if将无法看到它/ fi,因为管道分离进程.
总结以上是内存溢出为你收集整理的linux – 不支持进程替换全部内容,希望文章能够帮你解决linux – 不支持进程替换所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)