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?
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?
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.
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.
Etiketlerdeki diğer soruları oku command-line bash