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?
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?
Yanıtlar:
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.
$(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!
()- Komuta değiştirmeKomut 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).
&- Arka plan işlemiVe sonra ve işareti veya &sembolü, dediğin gibi, arka planda çalıştırmak için kullanılır.
"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
$( ), ama dinlenme yok. Sadece$(command) &bu beni karıştırıyor.