2017-04-15 19 views
0

if文がネストされている行14と16に問題があります。それは私にコマンドが見つかりませんでしたエラーを返しますが、私はコードの一部をテストし、それは他の場所で使用されてOKです。if文でBashコマンドが見つかりませんでした

#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 

誰でも知りたいですか?おかげで...

+0

ここで、このコードを書く方法を学びましたか? – 123

+0

私はいくつかの本を読んでいますが、私はスクリプトを作成していない、それは長い時間ですか? – Salvio

+3

http://shellcheck.netを使用することを理解し、その出力を理解します。防御プログラミングの問題として、変数の前後にdbl-quotesを使用したくないケースはほとんどないので、 '' $ contract 'のようなファイル名を取得し始めると、 '' $ firstPdf "'は将来の頭痛からあなたを救うでしょう。 2017年。がんばろう。 – shellter

答えて

3

あなたは後のスペースを必要とする[と前]

+0

...と 'if'のあとのスペース! – Luke

1

あなたは開口部ブラケットの後、テスト文のクローズ1の前にスペースが必要です。

[$pdfCount -eq 1] 

は次のようになります。

[ $pdfCount -eq 1 ] 

と仮定pdfCOuntである場合、シェルが探しされるコマンドが[$pdfCountで、1が含まれていますであり、存在しないコマンドです。したがって、表示されているエラーメッセージです。

関連する問題