فرمانهای داخلی 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" # |