Bash - 在if语句中找不到命令错误

时间:2017-04-15 15:31:09

标签: bash if-statement command

我在第14行和第16行遇到问题,其中有嵌套的if语句。它返回命令未找到错误,但我测试了该部分代码,并且可以在其他地方使用。

#passing the argument page page.html
cat $1 | grep -o "wp-cli.org/commands/cache/\w*/\"" > temp.txt
#creating all pdf files
for i in $(cat temp.txt)
do 
source=$(echo $i | grep -o -P "wp-cli.org/commands/cache/\w+")
dest=$(echo $i | grep -o -P "\w+/\"" | grep -o -P "\w+")
#echo $source $dest
wkhtmltopdf $source $dest".pdf"
pdfCount=$(ls *pdf | wc -l)
echo $pdfCount
if [ ! -f sample.pdf ]
then
 if [$pdfCount -eq 1] 
 then
    firstPdf=$dest".pdf" 
 fi
 if [$pdfCount -eq 2]
 then
    pdfunite $firstPdf $dest".pdf" sample.pdf
 fi
else
    pdfunite $dest".pdf" oldsample.pdf sample.pdf
    mv sample.pdf oldsample.pdf
fi
done

任何人都有这个想法?感谢...

2 个答案:

答案 0 :(得分:5)

在[和<]之前需要一个空格

答案 1 :(得分:1)

在开始括号之后和结束之前需要空格:

@Lazy

应该是:

[$pdfCount -eq 1]

假设[ $pdfCount -eq 1 ] 包含pdfCOunt,那么shell将要查找的命令是1,它是[$pdfCount,并且是一个不存在的命令,因此你看到的错误信息。