Yanıtlar:
Tercih edilen ve en yaygın kullanılanlar aynı şey değildir. printfBirçok nedenden dolayı daha iyi olsa da, çoğu insan hala echosözdizimi daha basit olduğu için kullanıyor .
Tercih etmenizin ana nedenleri printf:
echo standart değildir, farklı sistemlerde farklı davranır.Gerçekte ne zaman koştuğunu tahmin etmek zor echo foo. Bunu göstermek için Debian sistemimde:
$ type -a echo
echo is a shell builtin
echo is /bin/echo
Gördüğünüz gibi, iki farklı echokomut var, biri kabuk (bu durumda bash) yerleşik ve diğeri ayrı bir ikili. Not bashayrıca vardır printfyerleşiği ama (o işaret için @ RaduRădeanu sayesinde) daha az bir sorun olduğunu bu yüzden onun davranışı daha standardize edilmiştir.
echoDestek komut satırı anahtarlarının bazı (hepsi değil) uygulamaları, a ile başlayan bir dize yazdırmak zordur -. Birçok program --anahtarların sonunu ve bağımsız değişkenlerin başlangıcını belirtmeyi desteklese de (örneğin, içerdiği grep -- -a filesatırları bulur ) . Peki, baskınız nasıl ?file-aechoecho-n
$ echo -n ## no output
$ echo '-n' ## no output
$ echo "-n" ## no output
$ echo \-n ## no output
$ echo -e '\055n' ## using the ASCII code works but only on implementations
-n ## that support -e
printf bunu kolayca yapabilir:
$ printf -- '-n\n'
-n
$ printf '%s\n' -n
-n
$ printf '\055n\n'
-n
Neden printfdaha iyi olduğunu bilmek istediğinizden daha fazla bilgi echoiçin, http://unix.stackexchange.com adresindeki benzer bir sorunun yanıtına bakın :
printfiyi bir tercüman olarak tercih etmeme yardımcı oluyor .
printf(bkz. type -a) İçin de geçerlidir .
printfdaha katı tanımlanmış ve bence yerleşik aynı standardı takip ediyor. POSIX gözlük için echodiğer taraftan uygulamaları ve bu arasındaki farklar olacağını az katı ve hatta açıkça devlet olan printftercih edilmelidir.
echo. Bu doğru mu?
echoyerine kullanmanın tek nedeni printf, formanın daha basit olabilmesidir. Ne yazdırdığınızı biliyorsanız echo foo, yazmaktan daha hızlı ve daha kolaydır printf 'foo\n'. Bunun dışında, bir değişkenin yazdırılması gereken komut dosyaları yazarken, kullanmak için asla iyi bir neden yoktur echo.
Hangisinin tercih edilebilir olduğunu sormak eksiktir.
Eğer herkes yapmak isterse, yeni satırlarla sonlandırılmış bir veya daha fazla metin satırı yayıyorsa , yankı yeterlidir. Özellikle yeni satır içermeyen bir "kısmi çizgi" dahil olmak üzere daha akıllıca bir şey amaçlanıyorsa, printf bu amaç için en iyisidir .
echo, "satırsonu kaçınmak" ile kolayca yapılır echo -n. Aslında, -nyankı özelliklerinin en taşınabiliridir. POSIX'e göre, SystemV'de yoktur, ancak çoğu Unice'de bulunur.
-n ama başka bir şey, hiçbir fikrim yok.