$ (Command) & ne yapar?


10

Bir bash betiğinde aşağıdaki sözdizimini gördüm:

 >$(command) &

&Sonunda ve işareti arka planda bir komut çalıştırdığını biliyorum , ancak dolar işareti artı komutun etrafındaki köşeli parantezlerle birlikte görmedim.

Bu ne işe yarıyor?


Bu tür bir kullanım olduğunu biliyorum $( ), ama dinlenme yok. Sadece $(command) &bu beni karıştırıyor.
AlphaOmega

Yanıtlar:


20

Kısa cevap

Sözdizimi göz önüne alındığında, $(command) &sonuç, sadece koşmanın çıktısını aldığınız commandve daha sonra bunu bir komut olarak çalıştırmayı denediğinizle aynıdır . Ve tüm bunlar arka planda yapılacak, yani terminalde görünür bir çıkış veya asılı olmayacaktı.

Örneğin mycommand.txt, içeriklerle adlandırılmış bir metin dosyamız varsa :

echo "Hello World"

Sonra komut

$(cat mycommand.txt) &

koşmaya eşdeğer olur

echo "Hello World" &

Ancak, ampersand ( &) öğesini eklediğimizden, bu komuttan herhangi bir çıktı görmeyecektik, bu nedenle bu örnekte oldukça işe yaramaz olurdu.


Uzun Cevap (Açıklama)

Dolar işareti $(değişken)

Parantez içindeki şeyden önceki dolar işareti genellikle bir değişkeni ifade eder. Bu, bu komutun ya bir bash betiğinden o değişkene bir argüman ilettiği veya bir şey için bu değişkenin değerini aldığı anlamına gelir. Değişkenleri çağırmak ve bildirmek için bash komut dosyalarındaki fark şu şekildedir:

Bir değişken bildirin olmadan dolar işareti ve diyoruz ile dolar işareti. Örneğin, bunu içeren bir komut dosyası

#!/bin/bash
STR="Hello World!"
echo $STR

Bunu çıktılar

Hello World!

Parantez ()- Komuta değiştirme

Komut ikamesi, komutun çıkışının komutun kendisini değiştirmesine izin verir. Komut ikamesi, bir komut aşağıdaki gibi çevrildiğinde oluşur:

$(command)

veya

`command`

Bash, komutu bir alt kabuk ortamında yürüterek ve komut ikamesini komutun standart çıktısıyla değiştirerek, sondaki yeni satırlar silinerek genişletmeyi gerçekleştirir. Katıştırılmış yeni satırlar silinmez, ancak kelime ayırma sırasında kaldırılabilir. Komut ikamesi $(cat file), eşdeğer ancak daha hızlı ile değiştirilebilir $(< file).

Ve işareti &- Arka plan işlemi

Ve sonra ve işareti veya &sembolü, dediğin gibi, arka planda çalıştırmak için kullanılır.


2

"komut" çıktısını bir komut olarak alır ve bunu arka planda çalıştırır. İşlevsel olarak "eval" ile karşılaştırılabilir


Terminal penceresinde bulunan, yapmaya çalıştığınız şeye bağlı olarak sizin girmeniz gerekmeyebilecek bir semboldür. Bir terminal açtığınızda hemen orada göreceksiniz.
monkeyman_stones

Anlamıyorum. Kısa olmasına rağmen, bu gerçek soruyu cevaplarken kabul edilen cevap cevaplamaz.
mveroone
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.