Bash neden \ n $ (cat file) dosyasında kaldırılıyor?

21

input.txt dosyası içeren dosyam varsa:

hello
world
!

Ardından, echo $(cat input.txt) bash komutunun çalıştırılması şunu çıkaracaktır:

hello world !

Neden dosyadaki dosyada tam olarak ne olduğunu nasıl çıkarabilirim?

    
sordu f.ardelian 14.04.2012 03:58

2 cevap

24

Kullandıysanız

echo "$(cat input.txt)"

doğru şekilde çalışacaktır.

Muhtemelen eko girişi yeni satırlarla ayrılır ve bunu ayrı komutlar olarak ele alır, böylece sonuç yeni satırlar olmadan olur.

    
verilen cevap arian 14.04.2012 04:10
0

Bash manuel sayfasından alıntı yapıldı, Command Substitution bölüm:

  

Gömülü yeni satırlar silinmez, ancak bunlar sırasında kaldırılabilir   kelime bölme.

Biraz daha, aynı bölüm:

  

İkame çift tırnak içinde, kelime bölme ve   pathname genişletme gerçekleştirilemiyor          Sonuçlar.

Bu yüzden echo "$(cat /etc/passwd)" çalışıyor.

Ayrıca, birinin değiştirilmesi gerektiğinin, POSIX belirtimlerine göre kaldırılması kaldırılıyor. yeni satır:

$ echo "$(printf "one\ntwo\n\n\n")"
one
two

Böylece, $(cat file.txt) yoluyla bir dosya çıkışı, takip eden yeni satırların kaybolmasına yol açabilir ve tüm dosya bütünlüğü önceliğe sahipse sorun olabilir.

    
verilen cevap Sergiy Kolodyazhnyy 06.04.2016 18:16

Etiketlerdeki diğer soruları oku