بر خلاف بسیاری از زبانهای برنامهنویسی دیگر، 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 تعریف متغیرها را اجازه میدهد .