درک متغیرها در اسکریپت‌نویسی Bash – بخش ۹ پرینت


## 🌀 درک متغیرها در اسکریپت‌نویسی Bash – بخش ۹

### 🔸 متغیر چیست و چرا مهم است؟

* متغیرها محل ذخیره موقت داده در حافظه هستند و می‌توان مقدار خروجی دستورها یا داده‌های کاربر را در آن‌ها نگه داشت ([tecmint.com][1]).
* سرعت دسترسی آن‌ها نسبت به فایل سریع‌تر است زیرا در حافظه نگهداری می‌شوند .

---

### 📌 اعلام و مقداردهی متغیر

* استفاده از دستور `declare` برای تعریف متغیر:

```bash
declare LEVEL
```
* مقداردهی:

```bash
LEVEL=0
```

*توجه:* در مقابل `LEVEL =` (با فاصله) اشتباه است.
* دسترسی به مقدار با پیشوند `$`:

```bash
echo "$LEVEL"
```
* دستور `unset LEVEL` برای حذف متغیر مورد استفاده قرار می‌گیرد ([tecmint.com][1]).

---

### 🆚 تفاوت متغیر تعریف‌شده و NULL

* وقتی متغیر بدون مقدار تعریف شود (`declare LEVEL`)، مقدار آن `0` و در printf نیز نمایش `0` را خواهد داشت. اما دسترسی و محاسبه بعدی متفاوت است .

---

### 🔄 قوانین نام‌گذاری

1. معنی‌دار بودن نام متغیر
2. پیروی از یک استاندارد (معمولاً با حروف بزرگ)
3. پیشگیری از اشتباه با استفاده از ترکیب‌های واضح مانند `TOTAL_BILLED_AMOUNT`, `ORDER_ID` ([tecmint.com][1]).

---

### 💡 انواع متغیرهای پیش‌تعریف‌شده Bash

Bash شامل بیش از ۵۰ متغیر داخلی است، برخی از آن‌ها:

* `BASH`, `BASH_VERSION`, `HOME`, `PWD`, `HOSTNAME`, `RANDOM`, `SHELL`, `TERM`, `PATH`, `PPID` و… ([tecmint.com][1]).
* **RANDOM** در هر بار فراخوانی یک عدد تصادفی جدید تولید می‌کند.
* توصیه شده تا متغیری با نام مشابه این موارد تعریف نشود، تا از بروز تداخل جلوگیری شود .

---

### 🧩 اهمیت استفاده از کوتیشن (`""`)

* بدون کوتیشن، فضای خالی به‌عنوان جداکننده پارامتر قلمداد می‌شود:

```bash
LEVEL="0 ; 1 ; 2"
printf "%s" $LEVEL # تنها "0" را چاپ می‌کند
printf "%s" "$LEVEL" # کل رشته را با فواصل نگهداری‌شده چاپ می‌کند
```

.

* استفاده از `${LEVEL}` کمک می‌کند رشته‌ها به‌درستی الحاق شوند:

```bash
FLAG="I passed LEVEL ${LEVEL}!"
```

([tecmint.com][1]).

---

### 🔐 بک‌اسلش (`\`)

* جلوی یک کاراکتر خاص می‌گذارد تا نسخه‌ی escape چاپ شود، مانند چاپ `"`:

```bash
printf "%c" "\""
```
* گزینه‌ی `%q` در `printf`، بک‌اسلش را برای ایمن‌سازی رشته‌ها درج می‌کند:

```bash
printf "%q" "$FLAG"
```

---

## ✅ جمع‌بندی

| جنبه | توضیح |
| --------------------------- | -------------------------------------------------- |
| **انواع متغیرها** | تعریف‌شده با `declare`، مقداردهی‌شده، پیش‌فرض Bash |
| **نکته مهم** | همیشه متغیرها را با کوتیشن `"$VAR"` فراخوانی کنید |
| **پیش‌فرض‌های Bash** | از تعریف مجدد آن‌ها خودداری کنید |
| **کاربرد بک‌اسلش و printf** | برای چاپ امن و رشته‌ای |

این بخش، نکات کلیدی در مورد رفتار متغیرها، ایمن‌سازی آن‌ها هنگام چاپ یا استفاده، و تفاوت‌های subtle بین حالت‌های مختلف تعریف را پوشش می‌دهد و پایه مناسبی برای ادامه‌دادن به بخش‌های آتی مثل export یا nested variables فراهم می‌آورد ([appservgrid.com][2]).

 


آیا این پاسخ به شما کمک کرد؟

  • 0
« برگشت