SORU
11 Temmuz 2010, Pazar


Ne amacı vardır : (kolon) GNU Bash yerleşik?

Hiçbir şey, yorum bir lider daha yapıyor, ama aslında kendi başına bir kabuk yerleşik bir komut amacı nedir?

Muhtemelen büyük ölçüde yorum büyüklüğüne bağlı olarak değişir arayın, @ hakkında sizin komut dosyalarına açıklama ekleme daha yavaş. Bunun için mümkün olan tek sebep bu

# poor man's delay function
for ((x=0;x<100000;  x)) ; do : ; done

# inserting comments into string of commands
command ; command ; : we need a comment in here for some reason ; command

# an alias for `true' (lazy programming)
while : ; do command ; done

Gerçekten aradığım şey olmuş sanırım.

CEVAP
11 Temmuz 2010, Pazar


Tarihsel olarakKabukları yerleşik komutlar olarak true false yoktu Bourne. true sadece let 0 gibi bir ** 8, false takma ad yerine.

: Bourne türetilmiş eski kabukları taşınabilirlik için true biraz daha iyi. Basit bir örnek olarak, ne ! boru hattı operatörü ne || liste operatör bazı eski Bourne kabukları olduğu gibi) sahip düşünün. Bu dallanma için tek yolu olarak, if deyim else yan çıkış durumuna göre yapraklar:

if command; then :; else ...; fi

if boş olmayan gerektirdiğinden then maddesi ve Yorum yok-op olarak boş olmayan, : hizmet sayılmaz.

Günümüzde(yani: modern bir bağlam) genellikle : true da kullanabilirsiniz. Hem POSIX tarafından belirtilen ve okumak true daha kolay bulabilirsiniz. İlginç bir fark var ancak: : sözde POSIXözel olarak inşa edilmiş, true bir isedüzenli yerleşik.

  • Özel built-ins kabuğu; Normal built-ins sadece "genellikle", ama kesinlikle garanti değil. yerleşik yerleşik olması gerekmektedir Genellikle düzenli bir program : adında bir çok sistem YOLUNDA true fonksiyonu ile olmamalı.

  • Muhtemelen en önemli fark, bu özel inşa edilmiş-ins, herhangi bir değişken kümesi tarafından dahili hatta çevre boyunca basit komut değerlendirme - devam sonra komutu tamamlar gibi gösterdi burada kullanarak ksh93:

    $ unset x; ( x=hi :; echo "$x" )
    hi
    $ ( x=hi true; echo "$x" )
    
    $
    

    GNU POSIX uyumluluk modu, ama "POSIX sh" kabukları bu çizgi, ksh93, dahil ve mksh. gözlem türetilmiş tüm diğer ana faaliyet dışında Bash, Zsh gibi bu şartı gözardı edilir,

  • Başka bir fark built-ins normal exec - burada Bash kullanarak gösterilen ile uyumlu olmalıdır

    $ ( exec : )
    -bash: exec: :: not found
    $ ( exec true )
    $
    
  • POSIX da : Bu dersin uygulamaya özgü bir ayrıntı olsa daha hızlı true, dan açıkça belirtiyor.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • BachelorsPadTv

    BachelorsPad

    17 Ocak 2012
  • ChasesAndCrashes

    ChasesAndCra

    31 Temmuz 2009
  • Cole Rolland

    Cole Rolland

    23 Kasım 2008