Tôi vừa stumbled khi cú pháp bash:
foo=42
bar=$[foo+1] # evaluates an arithmetic expression
Khi tôi đã google cho điều này, tôi thấy http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_03_04.html#sect_03_04_05 :
3.4.6. Mở rộng số học
Mở rộng số học cho phép đánh giá biểu thức số học và thay thế kết quả. Định dạng để mở rộng số học là:
$((EXPRESSION))
...
Bất cứ nơi nào có thể, người sử dụng Bash nên cố gắng sử dụng cú pháp với dấu ngoặc vuông:
$[ EXPRESSION ]
Tuy nhiên, điều này sẽ chỉ tính toán kết quả của EXPRESSION và không có thử nghiệm nào ...
Trong trang người đàn ông bash của tôi, tôi chỉ có thể tìm thấy $((EXPRESSION))
hình thức như:
foo=42
bar=$((foo+1)) # evaluates an arithmetic expression
Vậy kiểm tra không được thực hiện với $[...]
rằng làm với $((...))
, hoặc là $[...]
chỉ là một phiên bản cũ của $((...))
?
Đối với phối cảnh lịch sử, hãy xem http://stackoverflow.com/a/40048865/2908724. – bishop