Kabuk komut dosyalarında backticks veya dolar kullanma


9

Ben diğer komutun döndürülen sonucundan bazı değişken doldurmak gerekir kabuk komut dosyası (Bash kullanarak) yazma meşgul.

Yani böyle bir sözdizimi kullanıyorum:

VAR=`command 2>/dev/null`

Ancak komut dosyası kabukları hakkında bilgi ararken, yukarıdakilerin aşağıdaki sözdizimini kullanarak da elde edilebildiğini sık sık buldum:

VAR=$(command 2>/dev/null)

Her ikisi de benim için çalışıyor (her iki durumda da beklenen sonucu aldım) ve bu yüzden her iki formu da aynı şekilde kullanıp kullanamayacağımı veya gelecekteki evrimine uymaya devam etmek için bir forma bağlı kalmam gerekip gerekmediğini merak ediyorum. kabuk?


Bkz.
Aradaki

Belacqua'nın bağlantıları, farklılıklar ve kullanım hakkında birçok bilgi sunar. Bir Ubuntu sorunu değil, daha çok programlama konusu ile ilgili olduğu için kapanıyor. Yukarıda belirtilen bağlantıları takip tavsiye.
Luis Alvarado

Yanıtlar:



3

$()Mümkün olduğunca dolar işareti gösterimi ile sopa . İç içe geçmiş alıntı yapmaya gerek duyduğunuzda backticks hantal / kafa karıştırıcı olur. Ör:

$ FOO=`echo "foo's"`
$ echo $FOO
foo's

Backtick'lerin değiştirilmesi $()aynı çıktıyı verir ve okunması daha kolaydır (fark etmek için değişen açıların daha az alıntısı):

$ FOO=$(echo "foo's")
$ echo $FOO
foo's

Bu ve her tırnak işareti (tek tırnak, çift tırnak, ters tırnak) kabukta farklı bir şey anlamına gelir, bu yüzden $ kullanmak karmaşıklık düzeyini kaldırmaya yardımcı olabilir. Ve sizi takip eden geliştirici size teşekkür edecektir, çünkü ne yaptığınızı anlamak için daha kolay bir zamanı olacaktır.


Geri tıklamalar işlevsel olarak yuvalanamaz.
Bernhard

@Bernhard Örneğim, bu ifadeye neyin aklıma geldiğini gösteriyor.
Aaron
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.