Geri tepmeler arasındaki metinler komutun çıktısıyla yerine getirilir ve değiştirilir (izleyen yeni satır karakterleri eksidir ve çıktıda NUL karakterleri olduğunda kabuk davranışlarının değiştiğine dikkat edin). Buna komut yerine koyma denir, çünkü komutun çıktısıyla değiştirilir. Bu nedenle, 5 yazdırmak istiyorsanız, geri dönüş tuşlarını kullanamazsınız, echo "$b"
herhangi bir teklif ve kullanımı gibi tırnak işaretleri kullanabilirsiniz echo $b
.
Gördüğünüz gibi $b
, 5 içerdiğinden, backticks kullanırken bash
komutu çalıştırmaya çalışıyor 5
ve böyle bir komut olmadığından hata mesajı veriyor.
Geri tepmelerin nasıl çalıştığını anlamak için şunu çalıştırmayı deneyin:
$ A=`cat /etc/passwd | head -n1`
$ echo "$A"
cat /etc/passwd |head -n1
/etc/passwd
Dosyanın ilk satırını yazdırmalısınız . Fakat geri tepmeler kullandığımızdan, bunu konsolda yazmıyor. Bunun yerine A
değişkende saklanır . Buna yankılanabilirsin $A
. İlk satırın daha verimli yazdırılmasının komut head -n1 /etc/passwd
kullandığına dikkat edin, ancak backticks'in içindeki ifadenin basit olması gerekmediğine dikkat çekmek istedim.
Bu yüzden eğer ilk / etc / passwd satırı ise root:x:0:0:root:/root:/bin/bash
, ilk komut bash ile dinamik olarak değiştirilecektir A="root:x:0:0:root:/root:/bin/bash"
.
Bu sözdiziminin Bourne kabuğuna ait olduğunu unutmayın. Alıntı yapmak ve kaçmak, özellikle iç içe geçmeye başladığınızda, hızlı bir şekilde kabus olur. Ksh $(...)
, artık standardize edilmiş ( POSIX ) ve tüm mermilerle (Unix v9'dan Bourne kabuğu bile) desteklenen alternatifi sundu . Bu nedenle $(...)
, çok eski Bourne mermilerine taşınabilir olmanız gerekmedikçe bugün yerine kullanmalısınız .
Ayrıca, değişken genişlemede olduğu gibi (yalnızca zsh, yalnızca sözcük bölmede) çıktısı `...`
ve $(...)
sözcük bölünmesi ve dosya adı oluşturulmasına tabi olduğunu ve bu nedenle genellikle liste bağlamında alıntı yapılması gerektiğini unutmayın.