Tampaknya $[expr]
melakukan ekspansi aritmatika seperti $((expr))
. Tapi saya tidak dapat menemukan disebutkan $[
dalam manual bash. Perintah ini tidak memberikan hasil:
gunzip -c /usr/share/man/man1/bash.1.gz | grep -E '\$\['
Apa operator ini dan apakah perilakunya distandarisasi di mana saja?
Versi bash saya: GNU bash, versi 3.2.51 (1) -release (x86_64-apple-darwin13)
bash
arithmetic
AmadeusDrZaius
sumber
sumber
bash
khusus (usang)$[...]
adalah non-standar. The$((...))
(yang berasal dariksh
) adalah POSIX standar.man bash | grep -E '\$\['
. Output: Format lama $ [ekspresi] sudah usang dan akan dihapus dalam versi mendatangJawaban:
Anda dapat menemukan sumber bash lama di sini . Khususnya saya mengunduh bash-1.14.7.tar.gz . Di dalam
documentation/bash.txt
Anda akan menemukan:Referensi untuk
$[
masukdoc/bash.html
dari bash-doc-2.0.tar.gz unduhan danNEWS
file menyebutkan bahwa:$((...))
juga merupakan sintaks standar untuk ekspansi aritmatika, tetapi mungkin telah ditambahkan ke standar lebih lambat dari implementasi Bash yang asli.Namun,
$[...]
sepertinya masih berfungsi di Bash 5.0, jadi tidak sepenuhnya dihapus.sumber
Dalam utas pada milis GNU bash , dikatakan bahwa
$[
sintaksisnya adalah sintaksis awal yang sudah tidak digunakan lagi$((
, karena yang terakhir sudah digunakan oleh shell Korn.Menurut situs ini , manual untuk bash 3.2.48 berisi referensi ke
$[
sintaks. Jadi mungkin referensi ini telah dihapus di 3.2.51.sumber