[Çözüldü] cat EOF ve for döngüsü

Başlatan yavuzselim, 13 Mayıs 2011 - 11:50:08

« önceki - sonraki »

0 Üyeler ve 2 Ziyaretçi konuyu incelemekte.

yavuzselim

Bir bash betiği içerisinde bir dosyaya veri yazdırmak istiyorum.. Klasik metodu kullandım.


cat >> dosya << EOF
felan filan
hede höde
EOF


fakat betiğin ilerliyen kısımlarında bir for döngüsü içerisinde yine aynı dosyaya eklemeler yapmam gerekiyor.

for i in hede;do

cat >> dosya << EOF
hedeler hödöler
EOF
done


İlginçtir döngüde bir hata görünmemesine rağmen dosyaya ikinci kısmı yazmıyor. Acaba ilk girdide EOF ile dosyayı kapadığımızda bir daha açamıyormuyuz..

İkinci olarak bir dizin içerisindeki dosyaları sıralarken sadece ilk dosyanın ismini almam gerekiyor bunu nasıl yapabilirim? bir döngü ile iş yapılabilir ama "ls" yada "grep" "cut" "awk"  bu gibi komutlarda böyle bir özellik var mı? Awk ile sütün bazında alınabiliyor ama satır alınabiliyor mu?

mesela

ls | sort | awk '{printf $1} 

gibi bir komut ama sütünu değil satırı çıktı olarak verecek.. Böylece ilk dosyanın ismine ulaşmış olacağım..


ebubekirs

Alıntı yapılan: yavuzselim - 13 Mayıs 2011 - 11:50:08
İkinci olarak bir dizin içerisindeki dosyaları sıralarken sadece ilk dosyanın ismini almam gerekiyor bunu nasıl yapabilirim? bir döngü ile iş yapılabilir ama "ls" yada "grep" "cut" "awk"  bu gibi komutlarda böyle bir özellik var mı? Awk ile sütün bazında alınabiliyor ama satır alınabiliyor mu?

mesela

ls | sort | awk '{printf $1} 

gibi bir komut ama sütünu değil satırı çıktı olarak verecek.. Böylece ilk dosyanın ismine ulaşmış olacağım..

Bu kısım için
ls | head -n 1

işe yarayabilir. Harf sırasına göre isterseniz araya bir de sort ekleyebilirsiniz.

ls | sort | head -n 1


Dünyaya gelen de benim, dünyadan giden de benim

ulusoyab

kabuk programlamayı bilmem. (!) 
cat >> dosya << EOF
    for i in hede;do
          hedeler hödöler
    done
EOF
şeklinde yapınca olabilir mi?

yavuzselim

olmaz.

İlk mesaj için teşekkürler. Head nasıl aklıma gelmez hayret :) o kadar da düşündüm.. çok sağolasın.

heartsmagic

İlk kod için nereden yazılacak bilgiler? Bende mesela şu iş görüyor:

for i in $(ls)
do

    cat >> dosya << EOF
    $i
EOF

done


Ancak ikinci EOF'un yeri önem arz ediyor. Başında boşluk falan olursa carlıyor betik.
Hayattan çıkarı olmayanların, ölümden de çıkarı olmayacaktır.
Hayatlarıyla yanlış olanların ölümleriyle doğru olmalarına imkân var mıdır?


Böylece yalan, dünyanın düzenine dönüştürülüyor.

yavuzselim

Alıntı yapılan: heartsmagic - 13 Mayıs 2011 - 21:52:39
Başında boşluk falan olursa carlıyor betik.

Evet sıkıntı ordaymış. Bash'da Pythonvari bir boşluk sıkıntısı olması ilginç.. Boşlukları alınca çalıştı.

heartsmagic

EOF'a özel bir durum sanırım :)
Hayattan çıkarı olmayanların, ölümden de çıkarı olmayacaktır.
Hayatlarıyla yanlış olanların ölümleriyle doğru olmalarına imkân var mıdır?


Böylece yalan, dünyanın düzenine dönüştürülüyor.