متغیرهای Bash بدون نوع هستند

فصل 4. معرفی متغیرها و پارامترها

4.3- متغیرهای Bash بدون نوع هستند

بر خلاف بسیاری از زبانهای برنامه‌نویسی دیگر، Bashبرای متغیرهایش بواسطه «نوع»تبعیض قائل نمی‌شود. در اصل متغیرهای Bash رشته‌های کاراکتر هستند، اما، بر اساس زمینه عمل، Bash عملیات حسابی و مقایسه بر روی متغیرها را مجاز می‌کند. عامل تعیین کننده آن است که آیا محتوای یک متغیر فقط شامل ارقام است.

مثال ‎4-4‎. عدد صحیح یا رشته؟

#!/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 تعریف متغیرها را اجازه می‌دهد .