- Created a new sitemap.xml file for better SEO. - Added a compressed version of the sitemap as sitemap.xml.gz. - Introduced extra.css for custom styles, including Persian font support (IRANSansX). - Defined font-face rules for regular and bold styles of IRANSansX. - Implemented various text styles and layout adjustments for better readability. - Enhanced Mermaid diagram styles to support Persian text rendering.
3.4 KiB
درسنامه ۳-۴: گرفتن ورودی از کاربر و آرگومانها
در این درس یاد میگیریم اسکریپت فقط با مقدارهای ثابت کار نکند، بلکه از کاربر ورودی بگیرد یا هنگام اجرا از خط فرمان آرگومان دریافت کند.
گرفتن ورودی تعاملی با read
برای گرفتن ورودی از کاربر از دستور read استفاده میکنیم.
شکل ساده:
read NAME
echo "Hello $NAME!"
در این حالت، Bash منتظر میماند تا کاربر چیزی بنویسد و Enter بزند؛ مقدار وارد شده در متغیر NAME ذخیره میشود.
نمایش پیام راهنما با -p
معمولا قبل از گرفتن ورودی، پیامی به کاربر نشان میدهیم تا بداند چه باید بنویسد. برای این کار از گزینهٔ -p استفاده میکنیم:
#!/bin/bash
read -p "اسم شما چیه؟ " NAME
echo "Welcome, $NAME!"
هنگام اجرا:
bash ask_name.sh
اسکریپت پیام را نمایش میدهد، منتظر ورودی میماند و سپس پاسخ را در خروجی استفاده میکند.
استفاده از چند ورودی
میتوانیم چند بار read صدا بزنیم یا چند متغیر را همزمان پر کنیم:
#!/bin/bash
read -p "اسم شما؟ " NAME
read -p "شهری که توش زندگی میکنید؟ " CITY
echo "Hello $NAME from $CITY!"
یا به صورت یکجا:
read -p "اسم و نام خانوادگی؟ " FIRST LAST
echo "Hello $FIRST $LAST"
آرگومانهای خط فرمان ($1, $2, ...)
علاوه بر گرفتن ورودی هنگام اجرا، میتوانیم مقدارها را به صورت «آرگومان» هنگام صدا زدن اسکریپت بفرستیم.
"$1"اولین آرگومان"$2"دومین آرگومان و به همین ترتیب"$@"همهٔ آرگومانها
مثال:
#!/bin/bash
NAME="$1"
echo "Hello $NAME!"
اگر این فایل را hello_arg.sh بنامید، هنگام اجرا:
bash hello_arg.sh Ali
خروجی:
سلام Ali!
اگر آرگومانی نفرستید، متغیر NAME خالی خواهد بود.
ترکیب read و آرگومانها
یک الگوی سادهٔ رایج:
- اگر کاربر هنگام اجرا آرگومان فرستاد، از آن استفاده کن.
- اگر نه، از او سوال بپرس.
نمونهٔ ساده:
#!/bin/bash
if [ -z "$1" ]; then
read -p "اسم شما چیه؟ " NAME
else
NAME="$1"
fi
echo "Hello $NAME!"
در این مثال، -z یعنی «رشته خالی است».
تمرین کوتاه
- اسکریپتی بنویسید که:
- اگر هنگام اجرا نام کاربر به عنوان آرگومان داده شده بود، مستقیم از آن استفاده کند.
- اگر آرگومان خالی بود، با
read -pنام را از کاربر بپرسد.
- نسخهای دیگر بنویسید که هم نام و هم شهر را از کاربر بگیرد و در یک جمله نشان دهد.
در درس بعد، از همین ورودیها برای تصمیمگیری با استفاده از شرطها (if) استفاده میکنیم.