Sistem saati: 10 Eyl 2010, 13:38

Tüm zamanlar UTC + 2 saat [ DST ]




Yeni konu gönder Konuya cevap yaz  [ 2 ileti ] 
Yazar Mesaj
 İleti başlığı: Dosya içeriğini değişkene almak
İletiTarih: 07 Arl 2008, 04:24 

Kayıt: 30 Nis 2008, 15:07
İleti: 9
Konum: İstanbul
Bash ile bir dosyanın içeriğini değişkene alıp kullanmak istiyorum.
Kod:
input=$(cat dosyaadi.txt)
echo $input

Bu kodu çalıştırdığımda dosyamdaki satırbaşları(\n) görünmüyor. Acaba bu satırbaşları cat ile alırken mi gidiyor, değişkene atanınca mı, yoksa echo ile ekrana gönderince mi? Ve satırbaşlarını kaybetmemek için ne yapmalıyım?

_________________
Murat Çorlu
http://muratcorlu.com


Çevrimdışı
 Profile bak E-posta  
 
 İleti başlığı: Re: Dosya içeriğini değişkene almak
İletiTarih: 09 Arl 2008, 02:11 
Site Admin
Kullanıcı avatarı

Kayıt: 21 Oca 2008, 20:46
İleti: 11
Sorudaki meseleyi açıklamak için echo komutunun tanımına bakmak yeterli olacaktır.

Kod:
NAME
       echo - display a line of text


echo komutunun tanımından da anlaşıldığı gibi komutun asıl işlevi bir satır metin göstermektir.

Dolayısıyla echo komutu aldığı parametreyi "öncelikle" tek satır halinde ifade etmeye çalışır.

echo komutuna "-e" parametresi verilerek, komutun "\n" gibi özel karakterleri algılaması sağlanabilir. Ancak "\n" string içinde girilmiş olmalıdır.

Örneğin aşağıdaki komut 2 satır halinde bir çıktı verecektir. Yani 2 adet "\n" içerir.
Kod:
$ echo -e "1.satir\n2.satir"
1.satir
2.satir


Biz bir adet "\n" koymuş iken neden 2 adet satır sonu gelir diye düşünebilirsiniz. 2 adet satır sonu gelir çünkü echo komutu varsayılan olarak çıktısının sonuna bir adet satır sonu koyar ("\n"). (Bu özellik, bash ortamında echo çıktılarının komut satırının satır imlecini bir sonraki satır başında başlatabilmek için varsayılan olarak tanımlanmıştır.)

Eğer sondaki ekstra satır sonundan kurtulmak istersek, "-n" parametresi verebiliriz. Böylece bash scriptlerimizde echo sonucunda ekstra bir satır görmeyiz.

Buraya kadar echo ile ilgili bazı bilgiler verdikten sonra, arkadaşımızın sorusuna dönecek olursak; arkadaşımızın bahsettiği durumun nedeni, değişkene atılan "cat" çıktısının satır sonlarının echo ile tanınamamasıdır. Yani echo -e $degisken bile deseniz, gene de "cat" çıktısını atadığımız değişkeni satırlar halinde echo ile yazdıramayız.

Dolayısıyla verilen örnekteki "$input" değişkeni sadece echo ile satırlar halinde gösterilemez.

"cat" komutu ile alınan metnin satırlar halinde ekrana yazdırılması ile ilgili 2 örnek yazabilirim. Farklı yaklaşımlar kullanılarak, bu örnekler çoğaltılabilir.

Örnek 1 :
Kod:
cat dosyaadi.txt | while read satir;
do
  echo $satir;
done;


Örnek 2 :
Kod:
input=$(cat dosyaadi.txt);
# input=`cat dosyaadi.txt` # Yukarıdaki komut bu şekilde de yazılabilir.
for satir in $input;
do
  echo $satir;
done;


Umarım yardımcı olmuştur. Kolay gelsin.

_________________
Kimindir.com - Alan adı sorgulama servisi


Çevrimdışı
 Profile bak E-posta  
 
Önceki iletileri göster:  Sıralama  
Yeni konu gönder Konuya cevap yaz  [ 2 ileti ] 

Tüm zamanlar UTC + 2 saat [ DST ]


 Kimler çevrimiçi

Bu forumu görüntüleyenler: Kayıtlı kullanıcı yok ve 1 misafir


Bu forumda yeni konular açamazsınız
Bu forumda konulara cevap yazamazsınız
Bu forumda kendi iletilerinizi değiştiremezsiniz
Bu forumda kendi iletilerinizi silemezsiniz
Bu forumda dosya ekleyemezsiniz

Arama:
Git:  
 
cron