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

‎4.2‎- تخصیص متغیرها

=

عملگر تخصیص (بدون فاصله‌ای قبل و بعد از آن)

Caution

این عملگر را با = و ‎-eq‎ که به جای تخصیص بررسی می‌کنند، اشتباه نکنید!

توجه نمایید که = بر اساس زمینه عمل می‌تواند یک عملگر تخصیص یا یک test باشد.

مثال ‎4-2‎. تخصیص ساده متغیر

#!/bin/bash
# متغیرهای عریان
echo

# ماقبل می‌باشد؟ ‎'$'‎ چه وقت یک متغیر «عریان» است، یعنی فاقد ‎
#            .موقعی که به جای ارجاع کردن، تخصیص داده می‌شود‎

#                                                    تخصیص
a=879
echo "The value of \"a\" is $a."

#                                ‎'let'‎ تخصیص با استفاده از
let a=16+5
echo "The value of \"a\" is now $a."

echo

#             :(نوعی تخصیص واقعاً ناپیدا) ‎'for'‎ در یک حلقه
echo -n "Values of \"a\" in the loop are: "
for a in 7 8 9 11
do
  echo -n "$a "
done

echo
echo

#              :(همچنین نوعی از تخصیص) ‎'read'‎ در یک دستور
echo -n "Enter \"a\" "
read a
echo "The value of \"a\" is now $a."
echo

exit 0

مثال ‎4-3‎. تخصیص متغیر، ساده و تفننی

#!/bin/bash

a=23              # حالت ساده
echo $a
b=$a
echo $b
                  # .اکنون، اندکی تفننی‌تر (جایگزینی فرمان)‏‎

a=`echo Hello!`   #      ‎a‎ به متغیر ‎echo‎ تخصیص نتیجه فرمان‎
echo $a
#       در داخل یک ‎(!)‎ توجه نمایید که گنجاندن یک علامت تعجب‎
#+       ساختار جایگزینی فرمان، در خط فرمان عمل نخواهد کرد
#+      را راه‌اندازی می‌کند. اما Bash چون ساز و کار تاریخچه 
# .داخل اسکریپت، به طور پیش‌فرض عملیات تاریخچه غیر فعال است

a=`ls -l`      #       تخصیص می‌دهد a را به متغیر ‎ls -l‎ نتیجه فرمان
echo $a        # .‎ها و سطرجدیدها را حذف می‌کندtab‎ نقل‌قولی نشده، اما
echo
echo "$a"      #      .متغیر نقل‌قولی شده فضای سفید را محافظت می‌کند
               #                   (.فصل «نقل‌قول» را ملاحظه نمایید)
exit 0

تخصیص متغیر با استفاده از ساختار ‎$(...)‎ (این یک شیوه جدیدتر از نقل‌قول‌های وارونه است). همچنین، این ساختار شکلی از جایگزینی فرمان است.

# از اسکریپت ‎/etc/rc.d/rc.local‎
R=$(cat /etc/redhat-release)
arch=$(uname -m)