2016-04-09 6 views
-1

私はDjangoプロジェクトを持っています。それはブログ記事を集約し、この機能がURLに添付されている機能です。そして、私はこの機能(URL)を指定された時間に実行する必要があります。そのために私はcronを使っていますが、シェルスクリプトを書いていますが、シェルスクリプトではうんざりですが動作しません。 どうしたらいいですか?シェルスクリプトのエラー

OUT=$(curl -qSfsw '\n%{http_code}' url ) 2>/dev/null 
RET=$? 
if [[ $RET -ne 0 ]]; then 
echo "Adding of blogs was failed: $(echo "$OUT" | tail -n1)" | mail -s "Adding of blogs was failed" [email protected] 
else 
echo "Blogs were added successfully" | head -n-1 | mail -s "Blogs were added successfully" [email protected] 
fi 

エラーテキスト:あなたはパイプを使用している

./update_blogs.sh: line 7: syntax error near unexpected token `fi' 
./update_blogs.sh: line 7: `fi' 

答えて

0

は「|」、このような理由のために、これがあればcomandeの終わりであると考えています。あなたは「(」と「)」を使用して、グループcommandesに持ってこの問題解決するために:

OUT=$(curl -qSfsw '\n%{http_code}' http://appbrainiac.com/api/daily_blogs_update/ ) 2>/dev/null 
RET=$? 
if [[ $RET -ne 0 ]]; then 
( echo "Adding of blogs was failed: $(echo "$OUT" | tail -n1)" | mail -s "Adding of blogs was failed" [email protected]) 
else 
(echo "Blogs were added successfully" | head -n-1 | mail -s "Blogs were added successfully" [email protected]) 
fi 
+0

で削除することができます。 if/then/else内のステートメントは、かっこでグループ化する必要はありません。 – Jens

0

を私はあなたのスクリプトを使用する場合、この問題を再現(&を貼り付け、それをカット)してsh -n scriptnameを通してそれを走ったことができませんでした(これはsh構文をテストします)。

しかし、DOSの行末(\r\n)を使用すると、同様のエラーが発生する可能性があります。このスクリプトは何とかWindowsマシンから転送されましたか? Windowsのエディタで編集しましたか?

これが問題であれば、検証

od -bc scriptname 

を実行し、キャリッジリターン\r文字がスクリプトであるかどうかを見ます。その場合は、

dos2unix scriptname 
関連する問題