Köşeli parantezin ardından $ […] bir dolar işareti ne demek bash'ta?


34

Tıpkı $[expr]olduğu gibi aritmetik genişlemeyi gerçekleştiriyor gibi görünüyor $((expr)). Fakat $[bash el kitabında hiç bir şey bulamıyorum . Bu komut sonuç vermez:

gunzip -c /usr/share/man/man1/bash.1.gz | grep -E '\$\['

Bu operatör nedir ve davranışı herhangi bir yerde standartlaştırılmış mı?

Bash versiyonum: GNU bash, versiyon 3.2.51 (1) -Geri bırakma (x86_64-apple-darwin13)


3
Bir standart hakkındaki sorunuzu açıkça cevaplamak için : (eski) bashbelirli bir $[...]sözdizimi standart değildir. $((...))(Diğer bir etkendir ksh) POSIX standardıdır.
Janis,

2
İle Ubuntu 11.04: man bash | grep -E '\$\['. Çıktı: Eski biçim $ [expression] kullanımdan kaldırıldı ve gelecek sürümlerde kaldırılacak
Cyrus

Eğer arama şey böyle bilinmelidir gerekiyordu olursa sizin grep başarısız böylece (farklı görünebilir şekilde daha sonra adam yardımcı programı tarafından yorumlanır) Adam sayfaları _t_h_i_s gibi şeyler içerebilir
Olivier Dulac

Yanıtlar:


19

Eski bash kaynağını burada bulabilirsiniz . Özellikle bash-1.14.7.tar.gz dosyasını indirdim . İçinde documentation/bash.txtbulacaksınız:

Aritmetik Genişleme

Aritmetik genişleme, bir aritmetik ifadenin değerlendirilmesine ve sonucun değiştirilmesine olanak sağlar. Aritmetik genişleme için iki biçim vardır:

     $[expression]

     $((expression))

Referanslar için $[de gitti doc/bash.htmldan bash-doc-2.0.tar.gz indirmek ve NEWSdosya bahseder:

$[...]Aritmetik genişleme sözdizimi artık lehine, desteklenir $((...)).

$((...))aynı zamanda bir aritmetik genişleme için standart sözdizimidir , ancak standarda orijinal Bash uygulamasından daha sonra eklenmiş olabilir.

Ancak, $[...]Bash 5.0'da hala çalışıyor gibi görünüyor, bu yüzden tamamen kaldırılmadı.


27

GNU bash posta listesindeki bir başlıkta , $[sözdiziminin $((Korn kabuğu tarafından kullanıldığından beri , kullanımdan kaldırılmış olan erken bir sözdizimi olduğunu söylüyor .

Bu siteye göre , 3.2.48. Bash el kitabı, $[sözdizimine referans içeriyordu . Dolayısıyla, muhtemelen bu referans 3.2.51'de kaldırılmıştır.

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.