将脚本执行输出存储在bash变量中

时间:2019-02-07 13:46:16

标签: bash

我正在从bash脚本中运行可执行文件。我需要将此执行的输出存储在变量中。当我只运行可执行文件时,可执行文件正在运行并给出正确的结果,但是当我尝试将输出存储到变量时出现错误。

可执行文件是一个名为pdfToolBox的工具,其运行方式如下所示:

./<path_to pdfToolBox> --extracttext <path_to pdfFile>

如上所示,可执行文件接受命令和文件进行检查。您可以在https://help.callassoftware.com/m/pdftoolbox/l/657637-installation-and-activation-of-pdftoolbox-server-cli处找到该工具的完整可用文档。 我在项目中使用CLI界面。

现在,我正在创建一个脚本,该脚本接受可执行路径和pdf文件路径并执行上述命令。所以我可以从终端上调用它,例如:

./check_file.sh <path_to_pdfToolBox> <path_to_pdfFile>

这是我编写的代码:

#!/bin/bash

# we will use this to find if there is any text in the file being checked
# return value from here will be used to load the proper profile for file check
find_text() {
    local containedText=""

    $containedText="./$pdfToolBox --extracttext $fileToCheck"

    echo "$containedText"

    # process containedText to check file
}

# argument 1 is the path of pdfToolBox executable
# argument 2 is the path of pdf file to be checked
pdfToolBox=$1
fileToCheck=$2

find_text

我希望将输出保存在变量$containedText中,但是会收到如下错误:

./findText2.sh: line 7: =./pdfToolbox --extracttext data/Test-Briefpapier-A3-sg.pdf: No such file or directory

我尝试同时使用相对路径和实际路径,但似乎都无法正常工作并返回相同的错误。但是,如果我将line 7更改为

./$pdfToolBox --extracttext $fileToCheck

代替

$containedText="./$pdfToolBox --extracttext $fileToCheck"

它执行没有任何错误。我不能在这里指出问题。请帮忙。

1 个答案:

答案 0 :(得分:1)

将其中的美元符号取下。

containedText="./$pdfToolBox --extracttext $fileToCheck"

但是那仍然不会做你想要的,因为你已经引用了它。

您需要执行它,而不是将其存储为字符串。

containedText=$($pdfToolBox --extracttext $fileToCheck)