【问题标题】:bash - check if string variable equals form feedbash - 检查字符串变量是否等于换页
【发布时间】:2014-07-21 04:02:13
【问题描述】:

我是 bash 的新手,所以这可能只是简单的回答,但我的研究还没有为我找到解决方案。我正在尝试编写一个简单的 bash 脚本来检查是否需要对 pdf 进行 OCR 处理。它使用随 Xpdf 分发的 pdftotext 可执行文件。如果pdftotext 不输出任何文本,则需要对 PDF 进行 OCR 处理。问题是,如果 PDF 没有经过 OCR 处理,pdftotext 返回一个换页符(不仅仅是一个空字符串)。尽我所能,我无法让 bash 将 pdftotext 返回的字符串与表单提要进行比较。

这是我的代码:

pdf_txt=$(pdftotext -q -l 5 '/Path/to/pdf/test.pdf' -)
if [ "$pdf_txt" = "\f" ]
then
    echo 'needs ocr'
else
    echo "doesn't need ocr"
fi

现在,test.pdf 尚未经过 OCR 处理。如果我在 Python 中运行此测试并使用repr(),我会得到\x0c,即换页符的字符代码。但是 bash 中的 echoing $pdf_txt 只会打印空行。

想法?有什么建议吗?

【问题讨论】:

    标签: bash pdftotext


    【解决方案1】:

    这个

    "\f"
    

    不做你认为它做的事。使用ANSI-C Quoting:

    $'\f'
    

    还有,

    pdf_txt="$(pdftotext -q -l 5 '/Path/to/pdf/test.pdf' -)"
    

    【讨论】:

    • 啊!我知道这很简单。我只是可以找到正确的谷歌关键字来找到它。谢谢你。如果我可能会问一个相关的问题,引用的 pdf_txt var 和未引用的版本之间的确切区别是什么?
    • 引号保留所有生成的字节,而不加引号可以删除末尾的空格。
    • +1 用于 Ansi-C 引用。不过,对于您的第二点,我认为没有必要在赋值的右侧引用命令替换,因为它不受分词或路径名扩展的影响。例如。你可以做a=$(ls -l *); echo "$a"
    猜你喜欢
    • 2015-02-04
    • 2012-09-21
    • 2012-10-16
    • 1970-01-01
    • 2021-12-11
    • 2014-07-29
    • 2017-05-24
    • 2020-01-05
    • 1970-01-01
    相关资源
    最近更新 更多