我正在从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"
它执行没有任何错误。我不能在这里指出问题。请帮忙。
答案 0 :(得分:1)
将其中的美元符号取下。
containedText="./$pdfToolBox --extracttext $fileToCheck"
但是那仍然不会做你想要的,因为你已经引用了它。
您需要执行它,而不是将其存储为字符串。
containedText=$($pdfToolBox --extracttext $fileToCheck)