ایستگاه های کاری آنلاین OnWorks Linux و Windows

لوگو

میزبانی آنلاین رایگان برای ایستگاه های کاری

<قبلی | فهرست | بعدی>

ردیابی

اشکالات اغلب مواردی از جریان منطقی غیرمنتظره در یک اسکریپت هستند. به این معنا که بخش‌هایی از اسکریپت یا هرگز اجرا نمی‌شوند، یا به ترتیب اشتباه یا در زمان اشتباه اجرا می‌شوند. برای مشاهده جریان واقعی برنامه از تکنیکی به نام استفاده می کنیم ردیابی.

یک روش ردیابی شامل قرار دادن پیام های آموزنده در یک اسکریپت است که مکان اجرا را نشان می دهد. ما می توانیم پیام هایی را به قطعه کد خود اضافه کنیم:



echo "آماده شدن برای حذف فایل ها" >&2

اگر [[ -d $dir_name ]]; سپس اگر سی دی $dir_name; سپس

echo "حذف فایل ها" >&2

رم *

دیگر

echo "نمی توان به '$dir_name' cd کرد" >&2 خروج 1

فی دیگری

echo "هیچ دایرکتوری وجود ندارد: '$dir_name'" >&2 خروج 1

fi

echo "حذف فایل کامل شد" >&2

echo "آماده شدن برای حذف فایل ها" >&2

اگر [[ -d $dir_name ]]; سپس اگر سی دی $dir_name; سپس

echo "حذف فایل ها" >&2

رم *

دیگر

echo "نمی توان به '$dir_name' cd کرد" >&2 خروج 1

فی دیگری

echo "هیچ دایرکتوری وجود ندارد: '$dir_name'" >&2 خروج 1

fi

echo "حذف فایل کامل شد" >&2


پیام ها را به خطای استاندارد می فرستیم تا از خروجی عادی جدا شوند. همچنین خطوط حاوی پیام‌ها را تورفتگی نمی‌کنیم، بنابراین زمانی که زمان حذف آنها فرا رسیده است، پیدا کردن آنها آسان‌تر است.

اکنون هنگامی که اسکریپت اجرا می شود، می توان مشاهده کرد که حذف فایل انجام شده است:



[me@linuxbox ~]$ اسکریپت حذف در حال آماده سازی برای حذف فایل ها در حال حذف فایل ها

حذف فایل کامل شد [me@linuxbox ~]$

[me@linuxbox ~]$ اسکریپت حذف در حال آماده سازی برای حذف فایل ها در حال حذف فایل ها

حذف فایل کامل شد [me@linuxbox ~]$


bash همچنین یک روش ردیابی را ارائه می دهد که توسط گزینه -x و دستور set با گزینه -x پیاده سازی می شود. با استفاده از اسکریپت مشکل قبلی خود، می‌توانیم ردیابی را برای کل اسکریپت با افزودن گزینه -x به خط اول فعال کنیم:


#!/bin/bash -x

#!/bin/bash -x

اشکال زدایی


# trouble: اسکریپت برای نشان دادن خطاهای رایج عدد=1

اگر [ $number = 1 ]; سپس

echo "تعداد برابر با 1 است." دیگر

echo "عدد برابر با 1 نیست."

fi

# trouble: اسکریپت برای نشان دادن خطاهای رایج عدد=1

اگر [ $number = 1 ]; سپس

echo "تعداد برابر با 1 است." دیگر

echo "عدد برابر با 1 نیست."

fi


هنگام اجرا، نتایج به صورت زیر است:



[me@linuxbox ~]$ زحمت

+ عدد=1

+ '[' 1 = 1 ']'

+ echo 'تعداد برابر با 1 است.' عدد برابر با 1 است.

[me@linuxbox ~]$ زحمت

+ عدد=1

+ '[' 1 = 1 ']'

+ echo 'تعداد برابر با 1 است.' عدد برابر با 1 است.


با فعال بودن ردیابی، فرمان هایی را می بینیم که با بسط های اعمال شده انجام می شوند. علائم بعلاوه پیشرو نمایش ردیابی را نشان می دهد تا آنها را از خطوط خروجی معمولی متمایز کند. علامت مثبت، کاراکتر پیش‌فرض برای خروجی ردیابی است. آن موجود در PS4 (رشته 4) متغیر پوسته. محتویات این متغیر را می توان تنظیم کرد تا اعلان مفیدتر شود. در اینجا، محتویات متغیر را تغییر می دهیم تا شماره خط فعلی را در اسکریپتی که ردیابی در آن انجام می شود، لحاظ کنیم. توجه داشته باشید که برای جلوگیری از گسترش تا زمانی که واقعاً از دستور استفاده شود، نقل قول های تکی لازم است:



[me@linuxbox ~]$ صادرات PS4='$LINENO + '

[me@linuxbox ~]$ زحمت

5 + عدد = 1

7 + '[' 1 = 1 ']'

8 + echo 'تعداد برابر با 1 است.' عدد برابر با 1 است.

[me@linuxbox ~]$ صادرات PS4='$LINENO + '

[me@linuxbox ~]$ زحمت

5 + عدد = 1

7 + '[' 1 = 1 ']'

8 + echo 'تعداد برابر با 1 است.' عدد برابر با 1 است.


برای اجرای یک ردیابی بر روی یک بخش انتخاب شده از یک اسکریپت، به جای کل اسکریپت، می توانیم از آن استفاده کنیم تنظیم فرمان با -x گزینه:


#! / bin / bash

# trouble: اسکریپت برای نشان دادن خطاهای رایج عدد=1

#! / bin / bash

# trouble: اسکریپت برای نشان دادن خطاهای رایج عدد=1



set -x # ردیابی را روشن کنید

اگر [ $number = 1 ]; سپس

echo "تعداد برابر با 1 است." دیگر

echo "عدد برابر با 1 نیست."

fi

تنظیم +x # ردیابی را خاموش کنید


set -x # ردیابی را روشن کنید

اگر [ $number = 1 ]; سپس

echo "تعداد برابر با 1 است." دیگر

echo "عدد برابر با 1 نیست."

fi

تنظیم +x # ردیابی را خاموش کنید


ما با استفاده از تنظیم فرمان با -x گزینه فعال کردن ردیابی و +x گزینه غیرفعال کردن ردیابی این تکنیک را می توان برای بررسی چندین بخش از یک اسکریپت مشکل ساز استفاده کرد.


برترین سیستم عامل Cloud Computing در OnWorks: