فرمانهای داخلی declare یا typeset که دقیقاً مترادف هستند، تعریف نمودن خصوصیات متغیرها را میسر میکنند. این یک شکل بسیار ضعیف از تعیین نوع [1] قابل دسترس در برخی زبانهای برنامهنویسی است. فرمان declare مخصوص نگارش 2 یا جدیدتر Bash است. فرمان typeset در اسکریپتهای ksh نیز کار میکند.
(declare -r var1 همانند readonly var1 عمل میکند)
این مورد، همارِز زمختِ توصیفکننده نوع const در C است. اقدام برای تغییر مقدار متغیر فقط خواندنی با صدور یک پیغام خطا به شکست منجر میگردد.
declare -r var1=1 echo "var1 = $var1" # (( var1++ )) #
declare -i number # number=3 echo "Number = $number" # number=three echo "Number = $number" # #
برای متغیرهای تعریف شده به عنوان عدد صحیح، برخی عملیات حسابی بدون نیاز به expr یا let اجازه داده میشود.
n=6/3 echo "n = $n" # declare -i n n=6/3 echo "n = $n" #
declare -a indices
با متغیر indices به عنوان یک آرایه رفتار خواهد شد.
declare -f
یک سطر declare -f فاقد شناسه، در یک اسکریپت باعث لیست کردن تمام توابع تعریف شده در آن اسکریپت میگردد.
declare -f function_name
declare -f function_name در یک اسکریپت فقط تابع نامبرده را لیست میکند.
declare -x var3
این گزینه یک متغیر را به عنوان متغیری برای صدور به خارج از محیط خود اسکریپت تعریف میکند.
declare -x var3=373
فرمان declare در همان سطر تعریف مشخصات، تخصیص مقدار به متغیر را نیز اجازه میدهد.
مثال 9-10. کاربرد declare برای تعیین نوع متغیرها
#!/bin/bash func1 () { echo This is a function. } declare -f # echo declare -i var1 # var1=2367 echo "var1 declared as $var1" var1=var1+1 # echo "var1 incremented by 1 is $var1." # echo "Attempting to change var1 to floating point value, 2367.1." var1=2367.1 # echo "var1 is still $var1" echo declare -r var2=13.36 # #+ echo "var2 declared as $var2" # var2=13.37 # echo "var2 is still $var2" # exit 0 #
استفاده از دستور داخلی declare حوزه متغیر را محدود میکند.
foo () { FOO="bar" } bar () { foo echo $FOO } bar #
#
فرمان declare میتواند در شناسایی متغیرها، محیطی یا غیر آن، مفید باشد. این مورد مخصوصاً برای آرایهها میتواند سودمند باشد.
bash$ declare | grep HOME HOME=/home/bozo bash$ zzy=68 bash$ declare | grep zzy zzy=68 bash$ Colors=([0]="purple" [1]="reddish-orange" [2]="light green") bash$ echo ${Colors[@]} purple reddish-orange light green bash$ declare | grep Colors Colors=([0]="purple" [1]="reddish-orange" [2]="light green")
[1] |
در این مضمون، تعیین نوع یک متغیر به معنای دستهبندی و محدود کردن خصوصیات آن است. برای مثال، یک متغیر تعریف شده یا تعیین نوع شده به عنوان یک عدد صحیح دیگر برای مقایسههای رشتهای معتبر نیست. declare -i intvar intvar=23 echo "$intvar" # intvar=stringval echo "$intvar" # |