2016-04-09 33 views
-1

Bir Django projem var. Bunun içinde blog gönderilerini bir araya getiren ve bu işlevin URL'ye eklendiği bir işlev. Ve bu fonksiyona (url) belirlenen zamanda çalışmam gerekiyor. Bunun için ben cron kullanıyorum kabuk betiğini yazdım ama kabuk betiğinde noob var ve işe yaramıyor. Lütfen bana neyin yanlış olduğunu söyle?Kabuk betiğiyle ilgili hata

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 

hata metni: Sizin boru kullanan

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

cevap

0

"|", bu nedenle, bu takdirde comande sonu olduğunu düşünmektedir. "(" Ve ")" kullanarak grup COMMANDES zorunda bu sorunu çözmek için: Ben senin komut dosyası (& yapıştırdım kesilmiş) kullanılmış ve sh -n scriptname aracılığıyla çalıştırdığınızda

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

Uh, no ile kaldırabilirsiniz. If/o/else içindeki ifadelerin parantez ile gruplandırılmasına gerek yoktur. – Jens

0

I (bu sorunu yeniden olamazdı hangi sh sözdizimini sınar). Ancak, DOS satır sonlarını kullanırken (\r\n) benzer bir hataya neden olabilirim. Bu komut bir şekilde bir Windows makinesinden mi transfer edildi? Bir Windows editörü ile düzenlenmiş miydi?

Bu sorun olup olmadığını doğrulamak

od -bc scriptname 

çalıştırmak ve komut Satır Başı\r karakter varsa bakmak için. Eğer öyleyse, bunları

dos2unix scriptname