2016-04-01 20 views
0

MRTG grafiklerimize yeni bir ekipman parçası eklemek için gereken her şeyi otomatik hale getiren bir Bash komut dosyası yazmaya çalışıyorum. okuduğum cfg dosyası, sed komutuyla yapılabilir.Aşağıdaki satırlar, komut dosyası çalıştırılırken hata oluştuğunda "beklenmedik bir EOF", "" "hatasıyla karşılaşılır. Kasaba, kule, ekipman ve yön yukarıda beyan edilmiştir. Sorunun ne olabileceğini daraltmak için herhangi bir yardım büyük bir yardım olurdu!bash script sed komutu beklenmedik EOF ile eşleşme aranırken "" '

newpattern="WorkDir: /var/www/html/mrtg/$town/$tower/$equipment$direction" 
pattern="WorkDir: " 
sudo sed -e "s/$pattern/$newpattern/" ~/MRTGconfigs/mrtg-BeatriceBSWT2960.cfg 
+2

Beklenmeyen EOF hatası, komut dosyasında daha önce eşleşmeyen bir alıntıdan kaynaklanmaktadır. Ne yazık ki, kabuk, asıl sorunun nerede olduğunu güvenilir bir şekilde söyleyemez, bu yüzden hatayı bildirdiği yer, hatanın olduğu yerde, gerçekte olduğu yere yakın bir yerde değil. Komut dosyasının tamamını [shellcheck] (http://www.shellcheck.net) içine almayı deneyin ve gerçek sorunu tespit edip edemeyeceğini görün. Not: Jonathan Leffler'ın cevabı da doğrudur, ancak ayrı bir hatayı işaret ediyor. –

+0

İpucu için teşekkürler. Bildiğim harika olan kabuk kabuğu varlığını bilmiyordum. Kabuk betimlemesinde yeni başlamıştım ve bu da öğrenme eğrisini çok daha az ağrılı hale getirecek! – devdacool

cevap

2

Sen kesikler yedek metinde bolca bulunmaktadır çünkü s/// komuta eğik çizgiler dışında bir şey kullanmak gerekir: yerine % semboller kullanılır

newpattern="WorkDir: /var/www/html/mrtg/$town/$tower/$equipment$direction" 
pattern="WorkDir: " 
sudo sed -e "s%$pattern%$newpattern%" ~/MRTGconfigs/mrtg-BeatriceBSWT2960.cfg 

; Ne $pattern ne de $newpattern'da görünen başka herhangi bir karakter kullanabilirsiniz. Gerekirse, Control-A gibi bir kontrol karakteri kullanabilirsiniz; Bu da iyi çalışıyor.

+0

Yanıt için teşekkürler Jonathan. Söz konusu hata, Gordon (eksik alıntı) ile düzeltildi, ancak bu, aynı zamanda ortaya çıkmış olabileceğim başka bir sorunu da çözdü. – devdacool

+0

@devdacool: Bu değerlendirmeye katılıyorum - Gösterilen kodda değil, gösterilen koddaki bir problemi araştırdım, ancak Gordon anlattığınız sorun hakkında doğruydu (gösterdiğinize göre değil). [Bir kabuk komut dosyasının nasıl hata ayıklanır?] (Https://stackoverflow.com/questions/951336/how-to-debug-a-bash-script/951352#951352) adresini unutmayın. Kayıp ya da yabancı olmayan alıntılar yüzünden, üzülecek şeyler görürdünüz. –