سلام
از دوستان کسی نمیدونه چرا آقای سجادی ادامه آموزش رو نمیگذارند ؟
من خیلی دلگرم شده بودم چون جای دیگه ای یک آموزش تو این حالت تا حالا ندیده بودم .
در ضمن انجمنی هم که معرفی کردن خالی بود.
سلام
به خدا شرمنده
من خودم از ادمای بدقول بدم میاد اما خودم از همه بد قول ترم
درباره فرومی که معرفی کرده بودم ( یا ساخته بودم) باید بگم که نیاز به کمک داشتم که غیر از دوتا از دوستان کس دیگه ای که وقت نداشت و لذا اون سایت هم به تاریخ پیوست(فعلا)
اما هرجور شده وقتی یکم سرم خلوت تر بشه اونو دوباره راه میندازم
از شما و هرکس دیگه ای که این آموزش رو دنبال میکرد عذر خواهی میکنم
سرم خیلی شلوغه چون اگه خیلی زود پروژه ام رو دفاع نکنم برام صفر رد میشه اما حتما ادامه میدم
بازم شرمنده
برای شروع مجدد (ایشالا که دیگه تنبلی نکنم) با آخرین جدولی که کشیده بودم شرو میکنم
Type | Option Used to | Meaning
| Create Type |
======================================================================================================
Check boxes | --checklist | Allows you to display a list of items, each of which
| | may be individually selected.
------------------------------------------------------------------------------------------------------
Info boxes | --infobox | A simple display in a box that returns immediately,
| | without clearing the screen.
------------------------------------------------------------------------------------------------------
Input boxes | --inputbox | Allows the user to type in text.
------------------------------------------------------------------------------------------------------
Menu boxes | --menu | Allow the user to pick a single item from a list.
------------------------------------------------------------------------------------------------------
Message boxes | --msgbox | Displays a message to the user with an OK button
| | when they wish to continue.
------------------------------------------------------------------------------------------------------
Radio selection boxes | --radiolist | Allows the user to select an option from a list.
------------------------------------------------------------------------------------------------------
Text boxes | --textbox | Allows you to display a file in a scrolling box.
------------------------------------------------------------------------------------------------------
Yes/No boxes | --yesno | Allows you to ask a question, to which the user
| can select either yes or no.
واما ادامه بحش شیرینی برنامه نویسی
دو نکته رو باید توجه داشت
یکی اینکه چندین مدل دیالوگ دیگه هم وجود داره مثل دیالوگ پسورد یا چیزای دیگه که به اینها دیالوگ های غیر عادی یا unusual هم میگن و برای مطالعخ بیشتر از اینترنت قابل دسترسی هستند
و نکته دیگه اینکه برای اینکه خروجی های این دیالوگ ها رو داشته باشیم باید مقدار استاندارد اررور رو داشته باشیم و به قولی کپچر کنیم
به عنوان یه راه ساده و معمول میشه اون رو به یه یک فایل موقت انتقال داد و خروجی اون رو در یک فایل موقت ریخت
برای به دست آوردن مقادیر yes/no میشه از مقدار exit استفاده کرد که همونجوری که قبلا گفتم مقدار ۰ برای yes و موفقیت و مقدار ۱ برای شکست به کار میره
همه دیالوگ ها پارامتر های خیلی زیادی دارند که کنترلشون میکنه
به عنوان مثال اندازه و ابعاد و یا شکل دیالوگ
خوب بعد از کمی مطالعه بیشتر در باره دیالوگ ها و پارامترهاش سعی میکنم تا یه برنامه کوچیک هم با هم بنویسیم
به جدول زیر دقت کنید
Dialog Type | Parameters
======================================================================
--checklist | text height width list-height [tag text status] ...
----------------------------------------------------------------------
--infobox | text height width
----------------------------------------------------------------------
--inputbox | text height width [initial string]
----------------------------------------------------------------------
--menu | text height width menu-height [tag item ] ...
----------------------------------------------------------------------
--msgbox | text height width
----------------------------------------------------------------------
--radiolist | text height width list-height [tag text status] ...
----------------------------------------------------------------------
--textbox | filename height width
----------------------------------------------------------------------
--yesno | text height width
خوب حالا یه مثال
فکر کنم اگر هریک از دوستان این مثال رو خوب متوجه بشن در درک مثال های بعدی و مثال ها و برنامه های پیچیده تر مشکلی نداشته باشند
ما یه چک لیست میسازیم و تایتل یا عنوان اون رو Check me میذاریم و توضیح اون رو میذاریم Pick Numbers این دیالوگ رو با ارتفاع ۱۵ و عرض ۲۵ کاراکتر میسازیم
dialog --title “Check me” --checklist “Pick Numbers” 15 25 3 1 “one” “off” 2 “two” “on” 3 “three” “off”
خوب تنها نکته مهمی که به نظرم میرسه تا توجه شما رو بهش جلب کنم اینه که سه پارامتر رو برای هر منو آیتم باید مقدار دهی بشه
Bullet Number
Text
Status
به عوان مثال اولین چک لیست ما دارای شماره ۱ و متن one هستش. موقعیت این آیتم هم off هستش
خوب برای اینکه یه برنامه بنویسیم نیاز داریم تا خروجی خطای استاندارد (standard error) رو به یه فایل منتقل کنیم و یا با متغیر ها و پارامتر های سیستمی که قبلا باهاشون آشنا شدیم خروجی دستور قبلی رو بخونیم
به برنامه ساده زیر دقت کنید
#!/bin/sh
# Ask some questions and collect the answer
dialog --title “Questionnaire” --msgbox “Welcome to my simple survey” 9 18
خوب ما بایه پیغام شروع کردیم تا یوزر رو از اونچه که اتفاق میفته مطلع کنیم و نیازی به خروجی این دیالوگ نداریم
dialog --title “Confirm” --yesno “Are you willing to take part?” 9 18
if [ $? != 0 ]; then
dialog --infobox “Thank you anyway” 5 20
sleep 2
dialog --clear
exit 0
fi
حالا یه سوال ساده پرسیدیم که جواب یوزر بله یا خیر خواهد بود
و در ادامه هم همونجوری که میبینید از متغیر محلی $? استفاده کردیم تا جواب یوزر رو چک کنیم و در صورتی که جواب یوزر مثبت بود (یعنی خروجی دستور قبل صفر بود) که هیچی در غیر این صورت یه سری کار انجام میدیم و به عنوان مثال یه infobox که خروجی خاصی نداره قبل از خروج نمایش میدیم و در آخر هم از برنامه خارج میشیم
dialog --title “Questionnaire” --inputbox “Please enter your name” 9 30 2>_1.txt
Q_NAME=$(cat _1.txt)
اسم یوزر رو پرسیدیم و از یه inputbox استفاده کردیم و خروجی خطای استاندارد ، ۲ ، رو به یه فایل موقت منتقل کردیم که اسم این فایل _1.txt هست و ما میتونیم از درون این فایل مقدار Q_NAME رو داشته باشیم
dialog --menu “$Q_NAME, what music do you like best?” 15 30 4 1 “Classical” 2
“Jazz” 3 “Country” 4 “Other” 2>_1.txt
Q_MUSIC=$(cat _1.txt)
یک منو با ۴ گزینه مختلف نمایش داده شده و در نهایت خروجی خطای استاندارد رو دوباره ذخیره و در یک متغیر بارگذتری کردیم
if [ “$Q_MUSIC” == “1” ]; then
dialog --msgbox “Good choice!” 12 25
fi
خوب حالا مقدار خروجی مورد بررسی قرار گرفته شده و بر اساس انتخاب یوزر عمل خاصی صورت گرفته
و در آخر هم :
sleep 5
dialog --clear
exit 0
برنامه بالا یک نمونه از یک برنامه کامل میتونه باشه
چون این روند معمولا در همه برنامه ها (حتی برنمه های خیلی بزرگ) طی میشه
همونجوری که مشاهده می کنید
در همه برنامه ها نیاز هست تا یه پیغام ابتدایی داده بشه
یک سری سوال از کاربر پرسیده بشه
این پرسش ها معمولا در یکی ااز قالب های متنی (مثل اسم) - تک انتخابی مثل منو یا رادیو باکس - چند انتخابی مثل چک باکس جا میشن
و در نهایت هم بر اساس انتخاب های یوزر باید اعمال مختلفی انجام بشه و در مواردی مسیر برنامه تغییر کنه
پس برنامه بالا چهارچوب یه برنامه کامل و اینتر اکتیو هست!
به زودی با هم یه برنامه کامل رو خواهیم نوشت
به امید دیدار
سخن آخر
----------------------------
دوستان من خودم تازه کارم و هیچی بلد نیستم
خوشحال میشم اگه سایر دوستان هم یه کمکی بکنند و هر چند وقت یه بار یه پست کوچیک آموزشی اینجا بذارند
ممنون