2016-04-07 22 views
-2

içinde döngü yaparken, bir dosyadaki tarihlerin listesi için döngüye giren ve belirli bir işlem gerçekleştiren bir komut dosyası oluşturmaya çalışıyorum. Kodum aşağıdaki gibi görünüyor. Ben bash kabuk kullanıyorum. Unix bash kabuk

while read line; do 
#do something with $line 
done < file.txt 

Şimdiye kadar ben 2 tarihleri ​​ile benim senaryoyu test etmeye çalıştı, ama senaryo ilk buluşmada ancak ikinci için yürütür. Ayrıca, komut dosyam başarıyla tamamlandığını söylüyor. Bazıları bana burada yardımcı olabilir.

Şimdi, komut dosyasımı 4 tarih için çalıştırmaya çalışıyorum. Ayrıca birisinin N çizgisinin olduğu benzer bir sorunu olduğunu da okudum ama betik sadece N-1 için iyi çalışıyor. Ama bu soru için mükemmel bir cevap bulamadım.

+0

'$ file.txt' nedir? – karakfa

+0

döngü doğrudur. Herhangi bir windows satır sonu içermeyen 'file $ file.txt' kullanıp kullanmadığınızı kontrol edin –

+0

Gönderdiğiniz kodda açıkça bir sorun yok. Lütfen döngü içinde ne yaptığınızı ve girdi dosyasında ne olduğunu göstermek için sorunuzu düzenleyin. – Kenster

cevap

2

Denedim ve bu kod yapısı gayet iyi. Belki sorun döngü içinde mi?

[[email protected]]$ cat a.txt 
a 
b 
c 
[[email protected]]$ while read line; do echo $line; done < a.txt 
a 
b 
c 
0

Son satırın sonunda bir satır sonu olmalıdır. Yanlış bir dosya gösterecektir:

printf "1\n2" > file.txt 
wc -l file.txt 
1 file.txt 
while read line; do 
> echo $line 
> done < file.txt 
1 

Bu sorun mu yaşıyorsunuz? Sadece cat file.txt. Son satır ve komut istemi aynı satırda olduğunda, file.txt dosyasına yeni bir satır eklemeniz gerekir (echo >> file.txt gibi).