我是脚本编写的新手,但尝试一下并遇到一些我似乎无法解决的问题。
我想要做的是使用pdftk捕获不同的pdf文件,我喜欢cat的文件是从另一个能够触发脚本文件的程序中提供的,但是无法用它发送参数。因此,我创建了两个.txt文件,一个是单个设置,另一个是文件名。设置文件必须告诉我的脚本是否应该创建一个新文件,文件名应该告诉我的脚本要将哪个文件放入大的pdf文件中。
设置和文件名文件都被读入变量,并且通过使用echo,我可以看到这些变量的值是正确的,但是我不能因为某些原因使用它们而我无法弄清楚。
这是我的剧本:
#!/bin/bash
#on Date Who Call Remarks
# ------- ---------- --- ------ --------------------------------------------
# 1.0 28-07-2014 AAS ------ New script to combine pdf files.
#
# ==========================================================================
#
#Changelog:
#
#
#
# Locvar:
file=$(cat "/home/scanning/finloon/concatfile.txt")
setting=$(cat "/home/scanning/finloon/concatsetting.txt")
echo $file
echo $setting
removefile()
{
echo "remove combine.pdf"
rm -f -r /home/scanning/finloon/combine.pdf
rm -f -r /home/scanning/finloon/workfile.pdf
}
makefirst()
{
echo "make first combine.pdf"
pdftk /home/scanning/janssen/linked/44/$file cat output combine.pdf
}
copyfile()
{
echo "copy to workfile.pdf"
cp /home/scanning/finloon/combine.pdf /home/scanning/finloon/workfile.pdf
}
combinefile()
{
echo "combine files"
pdftk /home/scanning/finloon/workfile.pdf /home/scanning/janssen/linked/44/$file cat output combine.pdf
}
if [ "$setting" == "yes" ];
then
removefile
makefirst $file
else
copyfile
combinefile $file
fi
exit
concatsetting.txt = yes(unix文件,不包含空格)的内容
concatfile.txt = 1.pdf(unix文件,不包含空格)的内容
现在,当我运行我的脚本时,由于$ setting的值为yes,所以我希望它能在if语句中执行第一个命令,但它不会。我怀疑它与我用作变量的字符串有关,因为当我更改if语句以使用变量$ 1并且我通过concatcmr.sh启动脚本时它是可行的但是我也无法使用存储在文件变量中的文件名。在这里我似乎有同样的问题,因为如果我将该变量更改为$ 2并启动我的脚本为concatcmr.sh是1.pdf一切正常。
现在,如果我运行脚本,这是我得到的输出:
$ concatcmr.sh
次数1.pdf
是
复制到workfile.pdf
cp:无法统计`/home/scanning/finloon/combine.pdf':没有这样的文件或目录
合并文件
错误:无法找到文件。
错误:无法打开PDF文件:
/home/scanning/finloon/workfile.pdf
错误:无法找到文件。
错误:无法打开PDF文件:
遇到错误。没有创建输出。
完成。输入错误,因此没有创建输出。
$
虽然$ setting的内容是肯定的,但if语句并没有认识到这一点并跳过了else语句。我无法弄清楚为什么,一定是愚蠢的,但我却无法找到它。
提前感谢您的帮助!
欢呼声。