Kullanmak veya öğretmek için herhangi bir neden `…` yeni gelişim yerine geçecek mi?


16

Anladığım kadarıyla, daha kolay ve daha az hataya meyilli yuvalama ve kaçış sözdizimi nedeniyle , daha modern $(...)komut yerine `koyma sözdiziminin eski tabanlı sözdizimine göre tercih edildiğini düşünüyorum .

Ayrıca, /bin/shmodern kullanımdaki çoğu stil kabukları destekliyor gibi görünüyor $(…):

  • darbe
  • ash (ve bu nedenle BusyBox, en gömülü Linux)
  • tire
  • FreeBSD / bin / sh

Ve $(…)IEEE 1003.1 tarafından belirtilmiştir.

Bu yüzden çok ilgili 2 sorum var:

  • Komut dosyasının çalışması gereken belirli bir eski sistem bilmiyorsanız, kabuk komut dosyalarının yeni geliştirilmesinde `` kullanmak için herhangi bir neden var mı?
  • UNIX programlama öğrencilerine sadece yazmalarını öğretmek $(...)ve `sadece diğer geliştiricilerin kabuk komut dosyalarını okuyorlarsa karşılaşacakları eski bir varyant olarak tartışmak için herhangi bir neden var mıdır (ve gerçekten eski bir sistemle çalışıyorsa veya standart dışıysa ihtiyaç duyabilirler) bazı sebeplerden dolayı)?

7
Hayır, kullanmanın veya öğretmenin bir anlamı yok `...`. Sadece Bourne kabuğu ile geriye doğru taşınabilirlik için (Bourne kabuğu Thomson kabuğu ile geriye doğru taşınabilirlik için ^olduğu gibi |). Ancak bunun (t)csholmadığını unutmayın $(...)(ancak bunları kullanmanın veya öğretmenin bir anlamı yoktur).
Stéphane Chazelas

2
Bu bir Groucho Marx olayı `; {)
goldilocks

2
Bekle, geri tepmeler kullanımdan kaldırıldı ?? Nedenini açıklayan kanonik bir referansı olan var mı? (Tuhaf sözdizimi karakterleri üzerinde arama yapmak çok zordur.)
MathematicalOrchid

1
Yazması daha kolay. `` - 2 tuşa basar; $()- üst karakter + 4,9, üst karakter + 0 - 5 tuş basışları;
Vi.

3
@MathematicalOrchid stackoverflow.com/questions/9405478/… oldukça iyi görünüyor. Özellikle ek teklifler söz konusu olduğunda, backstick'lerin düzgün şekilde yuvalanması çok zordur.
Michael Ekstrand

Yanıtlar:


19

Geri keneler sıklıkla kullanıldığından, bu sözdizimsel yapıyı öğretmek mantıklıdır.

Elbette, $()stil komutu ikamesi, varsayılan stil (ve standart uygun yapı) olarak vurgulanmalıdır.

Geri keneler neden hala popüler? Çünkü yazarken bir karakteri kurtarıyorlar ve muhtemelen gözünde daha az ağırlar.


18
Ben bir özellik olarak "göz daha az ağır" karakterize olmaz, ama bir hata ...
jasonwryan

1
Normalde basit durumlarda backsticks, karmaşık durumlarda $ () kullanıyorum. Ancak şimdiye kadar çok sayıda senaryo backstick kullanıyor ve mezunlar onlarla ilgilenebilmeliydi.
peterh - Monica'yı

@jasonwryan Bu durumda böcek kısalık değil, keyfi konulardan kaynaklanmaktadır. Yani, komutu ters tırnak kullanarak bir göze daha kolay, ama bu değil neden o amorti edilir. Şekerin tanımı gereği kötü olduğunu söylemeye çalışmadıkça ve hepimiz ne istersek onu tercih etmeliyiz ... Aslında $()daha iyi görünmeyi seviyorum ama backticks daha kolay ve daha KISS; genel programlamanın Pavlovya OKB sonucu olabilir.
goldilocks

@goldilocks bir kez yaşlandığınızda, okunabilirlik zaten çok daha zor: backticks benim yaşımda pratik olarak kodda görünmez ...
jasonwryan

3
Örneğin bir Fransız klavyede, `olurken, Altrg + è, (tipine garip) 'dir $, (, )herhangi bir değiştirici gerekmez.
Stéphane Chazelas

5

Bunları programlama için kullanmam ve eski senaryolarda iyi olduğu için kabuk betiklerinde backtick ikamesinin kullanımını öğretmem (bu fikir birliği gibi görünüyor). Ancak doğası gereği kötü olduklarını sanmıyorum ve (en azından ortalama öğreticinizi Linux komut satırına göre değerlendirerek) hala sık sık iç içe geçmeyecekleri basit snippetlerde / tek gömleklerde ve sizin gibi şeylerde kullanılıyorlar. sadece bir kere yapacaksın.

Bkz. Komut ikamesi: geri işaretler veya dolar işareti / parantez ekli mi? .


1

Yapıyı kullanmaktan kaçınırım $()çünkü gerçek dünyada taşınabilir değildir. Dört mermi listelediniz - etrafındakinden çok daha fazla varyasyon var (büyüklük sırası?). Komut dosyanızı Solaris / bin / sh'de çalıştırmayı deneyin ve nasıl gittiğinizi görün.

Öte yandan, eski sistemleri desteklemeyi ne zaman bırakıyorsunuz? Asla yeni şeyler yapmanın yollarına ilerleyemez misin? Kendi muhakemenize güvenmeniz gerektiğine inanıyorum ve eski yolun yeni yolunun kesin bir avantajını görebiliyorsanız, o zaman devam edin ... bu onlardan biri değil (kişisel olarak bakterileri çok daha net buluyorum - onlar olamaz farklı bir şey olan kabuk değişken ikamesi ile karıştırılır)


1
POSIX, /bin/shbunun uygun olması gerektiğini belirtmez . Solaris /bin/shgerçekten çok uygun değil - Solaris 9/10 / ... resmi olarak POSIX uyumlu. $()Anlamadığı sadece bir yapıdır. Ancak anlamadığı veya farklı yorumlandığı daha pek çok şey var. shTarafından döndürülen yolda aramak için uygun bir almak için taşınabilir yol getconf PATH.
maxschlepzig
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.