بر خلاف بسیاری از زبانهای برنامهنویسی دیگر، Bashبرای متغیرهایش بواسطه «نوع»تبعیض قائل نمیشود. در اصل متغیرهای Bash رشتههای کاراکتر هستند، اما، بر اساس زمینه عمل، Bash عملیات حسابی و مقایسه بر روی متغیرها را مجاز میکند. عامل تعیین کننده آن است که آیا محتوای یک متغیر فقط شامل ارقام است.
#!/bin/bash # a=2334 # let "a += 1" echo "a = $a " # echo # b=${a/23/BB} # # echo "b = $b" # declare -i b # echo "b = $b" # let "b += 1" # echo "b = $b" # echo # c=BB34 echo "c = $c" # d=${c/BB/23} # # echo "d = $d" # let "d += 1" # echo "d = $d" # echo # e='' # echo "e = $e" # let "e += 1" # echo "e = $e" # echo # # echo "f = $f" # let "f += 1" # echo "f = $f" # echo # # #اما ... let "f /= $undecl_var" # # # # # let "f /= 0" # # # #+ #اما این را در منزل با دوستان امتحان نکنید! # # exit $?
متغیرهای بدون نوع هم نعمت هستند هم نکبت. آنها انعطافپذیری بیشتر در اسکریپتنویسی را میسر نموده و پیشروی سطرهای کد را آسانتر میسازند (و طناب کافی برای به دار آویختن خودتان به شما میدهند!). با وجود این، آنها خزیدن خطاهای ظریف را اجازه میدهند و عادتهای برنامهنویسی نامرتب را تقویت مینمایند.
برای کاستن از بار مسئولیت دیدهبانی کردن پیوسته از نوع متغیرها در یک اسکریپت، Bash تعریف متغیرها را اجازه میدهد .