linux - 检查终端输出是否与我的字符串匹配

标签 linux bash shell

我正在尝试查找我是否安装了正确的 leptonica 版本。我运行 tesseract -v,输出是这样的:

tesseract 3.04.01

 leptonica-1.73

  libgif 5.1.2 : libjpeg 8d (libjpeg-turbo 1.4.2) : libpng 1.2.54 : libtiff 4.0.6 : zlib 1.2.8 : libwebp 0.4.4 : libopenjp2 2.1.0

它的输出写在 stderr 上,所以我的脚本看起来像这样:

if tesseract -v 2> >(head -n2 | tail -n1) | grep -q 'leptonica-1-73' ; then
    echo "matched"
else
    echo "not found"
fi

当我运行脚本时,它显示:

Syntax error: redirection unexpected.

知道为什么吗?

最佳答案

是的。

使用

tesseract -v 2>&1 | head -n2 | tail -n1

代替

tesseract -v 2> >(head -n2 | tail -n1)

关于linux - 检查终端输出是否与我的字符串匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38853399/

相关文章:

shell - nslookup 捕获变量中的 stderr 并显示

c# - Shell 脚本与高级解释语言(C#/Java/等)的性能比较

c - git 的外部 shell cmd 源代码中的 execvp 调用返回 EFAULT(错误地址)errno,似乎仅在 64 位中。谷歌搜索什么也没透露

linux - 如何在 IntelliJ/WebStorm/PhpStorm 中从 "external tools"运行 sudo 脚本?

macos - 在 OSX 上使用 scp 完成远程路径

bash - 了解 docker 入口点脚本

linux - 如何在 bash_profile 文件中添加导出语句?

java - 运行 strace 并使用 Java 获取输出

linux - UML Linux - vmlinux.o 错误 1 ​​- 最终关闭失败 : Input/output error

node.js - 为什么 'sh -c' 返回的结果与我的实际命令不同?