مشابه فرمان let، ساختار (( ... )) نیز بسط و ارزیابی حسابی را مجاز میسازد. در سادهترین شکل آن، a=$(( 5 + 3 )) مقدار a را به 5 + 3، یا 8 تنظیم میکند. اگرچه، این ساختار پرانتزهای دوگانه مکانیسمی برای مجاز کردن دستکاری سبکِ C متغیرها در Bash نیز میباشد، برای مثال، (( var++ )).
مثال 8-5. دستکاری سبکِ C متغیرها
#!/bin/bash
#
#
echo
(( a = 23 )) #
#+
echo "a (initial value) = $a" #
(( a++ )) #
echo "a (after a++) = $a" #
(( a-- )) #
echo "a (after a--) = $a" #
(( ++a )) #
echo "a (after ++a) = $a" #
(( --a )) #
echo "a (after --a) = $a" #
echo
#
#
#+
n=1; let --n && echo "True" || echo "False" #
n=1; let n-- && echo "True" || echo "False" #
#
#
echo
(( t = a<45?7:11 )) #
# ^ ^ ^
echo "If a < 45, then t = 7, else t = 11." #
echo "t = $t " #
echo
#
#
#
#
#+
#
#+ اما فراتر از آن میرود. متاسفم Chet، راز برملا شد.
#
#
exitهمچنین مثال 11-13 و مثال 8-4 را ببینید.