سلام
از دوستان گرامی درخواست میکنم از این به بعد فقط پستهای مربوط به آموزش برنامه نویسی و هماهنگ با روند آموزش رو قرار بدن.
اگر کسی قصد تشکر، ارائه پیشهاد، تذکر مطلبی یا سوالی رو داره بصورت خصوصی برای آقای سجادی بفرسته.
پیشاپیش از همه دوستان ممنون.
بازم سلام
این نکته ای که آقای heresh جان عزیز فرمودند خیلی مهمه و از تمامی دوستان در این باره تشکر میکنم چون قراره ایشالا اینجا برای دوستان آینده ما که نوز به این فروم سر نزدند یا برنامه نویسی رو شروع نکردند مجموعخ منظمی ساخته بشه و راحت بتونند دنبال کنند!
قبل از شروع بحث جدید از تمام دوستانی که با نظرات زیبا و بجای خودشون ما رو در انتخاب راه آموزش یاری کردند و در این
رای گیری نظر خواهی شرکت کردند تشکر میکنم
و در آخر ilius جان چرا سالی یه بار به این تاپیک سز میزنی عزیز. ما منتظریما.... شما هم پست بزنی ممنون میشیم (و البته دیگر اساتید)
جاهایی که توضیح نمیدم و دستوراتی رو که از روشون میپرم تا زودتر بتونیم بحث مقدماب برنامه نویسی گرافیکی و gtk رو شروع کنیم رو براتون مینویسم تا اگه کسه خاست خودش پیگیری کنه
set - shift - trap - unset - grep - Regular expressions - command execution - parameter exception - Here Documents! - Debugging Script -
البته در باره دیباگ کردن همین الان یه کچولو میگم
معمولا نباید با دیباگ کردن اسکریپت هاتون مشکل خاصی داشته باشید ولی همونجوری که میدونید ابزار خاص و یکپارچه ای برای کمک به شما در این زمینه هم وجود نداره.لذا در اینجا باهم روش های دستوری رو یک مرور کلی میکنیم
به صورت عادی هنگامی که یک خطا رخ میده شل باید شماره خط و یک سری توضیحات رو چاپ کنه
اگه به هردلیلی شل اطلاعات لازم رو در اختیار ما نگذاشت یا کامل نبود میشه با اضافه کردن چنتا echo به کدمون خروجی ها و متغیر ها رو چک کنیم و یا دستورات رو مستقیما در ترمینال وارد کنیم و خط به خط برنامه یا بخشی از اون رو اجرا کنیم
برای trace کردن خطا های پیچیده و دشوار میشه آپشن های گوناگونی رو در شل ست کرد. برای اینکار شما میتونید از دستور set استفاده کنید ویا از command line بعد از اجرا کردن و صدا زدن اسکریپتتون بهره ببرید
و حالا لیستی از دستورات
Command Line Option | set Option | Description
=========================================================================================
sh -n <script> | set -o noexec | Checks for syntax errors only;
| set -n | doesn’t execute commands.
_________________________________________________________________________________________
sh -v <script> | set -o verbose | Echoes commands before
| set -v | running them.
_________________________________________________________________________________________
sh -x <script> | set -o xtrace | Echoes commands after processing
| set -x | on the command line.
_________________________________________________________________________________________
| set -o nounset | Gives an error message when an
| set -u | undefined variable is used.
شما میتونید با آرگومان -o فلگ ها یا پرچم ها رو روشن کنید و با دستور +o اونها رو خاموش کنید
راه ساده استفاده و اجرا کردن trace هم استفاده از آپشن xtrace هست
دستور زیر xtrace رو فعال میکنه
set -o xtrace
و دستور زیر اون رو خاموش یا غیر فعال میکنه
set +o xtrace
موقعیت exit رو هم میشه به سادگی با خطی مانند خط زیر در شل پیدا کرد که در اون exit یا سیگنال exit رو به تله انداختیم (trap) و البته معلومه که این خط حتما باید در ابتدای اسکریپت شما قرار داشته باشه!
trap 'echo Exiting: critical variable = $critical_variable' EXIT
امید وارم این افزایش سرعت ناگهانی من در آموزش شما رو به دردسر نندازه و بتونید دنبال کنید این تاپیک رو