• صفحه اصلی
  • سرور مجازی
    • سرور مجازی المان
    • سرور مجازی فرانسه
    • سرور مجازی امریکا
    • سرور مجازی کانادا
    • سرور مجازی انگلیس
    • سرور مجازی هلند
    • سرور مجازی ایتالیا
    • سرور مجازی ترکیه
    • سرور مجازی NVMe
  • سرور مجازی ایران
    • سرور مجازی برج میلاد
    • سرور مجازی زیرساخت
    • سرور مجازی آسیاتک
    • سرور مجازی تبیان
    • سرور مجازی پارس آنلاین
    • سرور کاهش پینگ
    • سرور مجازی اینترانت
  • سرور اختصاصی ایران
    • سرور اختصاصی برج میلاد
    • سرور اختصاصی آسیاتک
    • سرور اختصاصی زیرساخت
    • سرور اختصاصی تبیان
    • سرور اختصاصی شهراد
    • سرور اختصاصی پارس آنلاین
    • سرور اختصاصی افرانت
  • وبلاگ
  • استخدام
  • درباره ما
  • تماس با ما
ثبت نام
نام کاربری:
رمز ورود:
    • TR
    • UK
    • GE
    • FR
شرکت ارائه دهنده سرور مجازی نوین هاست
Menu
  • هاست
    • هاست سی پنل
      • هاست سی پنل المان
        • هاست سی پنل اشتراکی
        • هاست سی پنل پربازدید
      • هاست سی پنل ایران
        • هاست سی پنل ایران اشتراکی
        • هاست سی پنل ایران پربازدید
    • هاست دایرکت ادمین
      • هاست دایرکت ادمین
      • هاست دایرکت ادمین ایران
    • هاست ویندوز
      • هاست ویندوز ایران
      • هاست ویندوز
    • هاست دانلود
      • هاست دانلود
      • هاست دانلود ایران
    • هاست بکاپ
      • هاست بکاپ خارج
      • هاست بکاپ ایران
      • ریموت بکاپ
    • هاست چت روم
    • هاست ابری
    • هاست شرکتی
    • هاست وردپرس
    • هاست جوملا
    • هاست ارزان
    • هاست رایگان
  • نمایندگی فروش
    • نمایندگی هاست سی پنل
      • نمایندگی هاست سی پنل
        • نمایندگی هاست سی پنل اشتراکی
        • نمایندگی هاست سی پنل پربازدید
      • نمایندگی هاست سی پنل ایران
        • نمایندگی هاست سی پنل ایران اشتراکی
        • نمایندگی هاست سی پنل ایران پربازدید
    • نمایندگی هاست دایرکت ادمین
      • نمایندگی هاست دایرکت ادمین
      • نمایندگی هاست دایرکت ادمین ایران
    • نمایندگی هاست ویندوز
      • نمایندگی هاست ویندوز
      • نمایندگی هاست ویندوز ایران
    • نمایندگی هاست دانلود
      • نمایندگی هاست دانلود
      • نمایندگی هاست دانلود ایران
    • نمایندگی هاست بکاپ
      • نمایندگی هاست بکاپ
      • نمایندگی هاست بکاپ ایران
    • نمایندگی هاست ابری
    • نمایندگی هاست چت روم
    • نمایندگی درصدی هاست سی پنل
    • پذیرش نمایندگی کلی
    • نمایندگی فروش سرور مجازی
      • نمایندگی فروش سرور مجازی
      • نمایندگی فروش سرور مجازی ابری
  • سرور مجازی
    • سرور مجازی امریکا
    • سرور مجازی کانادا
    • سرور مجازی انگلیس
    • سرور مجازی المان
    • سرور مجازی هلند
    • سرور مجازی ایتالیا
    • سرور مجازی فرانسه
    • سرور مجازی ایران
    • سرور مجازی تبیان
    • سرور مجازی ایران برج میلاد
    • سرور مجازی پارس آنلاین
    • سرور مجازی آسیاتک
    • سرور مجازی کاهش پینگ
    • سرور مجازی رایگان
    • آفرهای ویژه سرور مجازی(محدود)
    • سرور ابری
    • گیم سرور
    • سرور مجازی ترکیه
    • سرور کلش آف کلنز
    • سرور ارسال ایمیل
    • سرور مجازی اینترانت
    • سرور مجازی NVMe
  • سرور اختصاصی
    • سرور اختصاصی امریکا
      • دیتاسنتر XLHOST
      • دیتاسنتر OVH
      • دیتاسنتر singlehope
    • سرور اختصاصی کانادا
      • دیتاسنتر ovh
    • سرور اختصاصی انگلیس
      • دیتاسنتر redstation
      • دیتاسنتر rapidswitch
    • سرور اختصاصی المان
      • دیتاسنتر hetzner
    • سرور اختصاصی فرانسه
      • دیتاسنتر ovh
    • سرور اختصاصی هلند
      • دیتاسنتر LeaseWeb
      • دیتاسنتر worldstream
    • افرهای ویژه سرور اختصاصی
    • گیم سرور اختصاصی
    • سرور اختصاصی ایران
      • سرور اختصاصی ایران زیرساخت
      • سرور اختصاصی ایران پارس آنلاین
      • سرور اختصاصی ایران تبیان
      • سرور اختصاصی ایران آسیاتک
      • سرور اختصاصی ایران برج میلاد
      • سرور اختصاصی ایران افرانت
      • سرور اختصاصی ایران شهراد
      • سرور اختصاصی ایران جایگاه
  • کولوکیشن
    • دیتاسنتر تبیان
    • دیتاسنتر زیرساخت
    • دیتاسنتر پارس انلاین
    • دیتاسنتر اسیاتک
    • دیتاسنتر نوین هاست
    • دیتاسنتر افرانت
    • دیتاسنتر جایگاه
    • دیتاسنتر شهراد شبکیه
    • دیتاسنتر برج میلاد
    • سخت افزار سرور
      • سرور hp
      • سرور dell
      • سرور سوپرمیکرو supermicro
  • ثبت دامنه
    • ثبت دامنه
    • تعرفه دامنه
    • جستجوی دامنه
    • انتقال دامنه
    • نمایندگی ثبت دامنه
    • گواهینامه SSL
  • محصولات
    • لایسنس
      • لایسنس سی پنل
      • لایسنس انتی شل CXS
      • لایسنس WHMCS
      • لایسنس لایت اسپید
      • لایسنس کلود لینوکس
      • لایسنس دایرکت ادمین
    • گواهینامه SSL
    • کانفیگ سرور
      • کانفیگ سی پنل
      • کانفیگ دایرکت ادمین
      • کانفیگ سی پنل ایران
      • کانفیگ پلسک
      • کانفیگ سرور دانلود
      • کانفیگ امنیتی سرور
      • کانفیگ میل سرور
      • کانفیگ سرور کاهش پینگ
      • کانفیگ websitepanel
      • کانفیگ Litespeed
      • کانفیگ Nginx
      • کانفیگ kvm
      • کانفیگ vmware
      • کانفیگ hyper-v
    • مدیریت سرور
    • اسکریپت VIP
    • پرداخت ارزی
      • پرداخت ارزی پی پال
      • افتتاح حساب پی پال
    • راهکار های سازمانی
      • سرویس VOIP
      • راه اندازی Hotspot
      • شبکه داخلی
  • طراحی سایت
    • طراحی سایت
    • بهینه سازی و سئو (SEO)
    • نمونه کارها

ارسال درخواست

پشتیبانی

کارشناسان ما منتظر تماس شما میباشند.

021-44041877

  • شما اینجا هستید:  
  • خانه
  • محصولات
  • کانفیگ سرور
  • کانفیگ سرور کاهش پینگ
  • Uncategorised
  • اسکریپت نویسی پیشرفته لینوکس - عیب یابی
  • nnn1
    سرور مجازی برج میلاد
    سرور مجازی برج میلاد
    سرور مجازی برج میلاد
    سرور مجازی
    سرور اختصاصی
    کولوکیشن
    سرور مجازی برج میلاد
  • nnn1
    سرور مجازی
    سرور مجازی
    سرور مجازی
  • nnn1
    ssl
    ssl
    order
  • nnn1
    هاست
    هاست
    هاست
  • nnn1

اسکریپت نویسی پیشرفته لینوکس - عیب یابی

  • چاپ
  • ایمیل

AdvancedLinuxShell-8-novinhost.org

اسکریپت نویسی پیشرفته لینوکس برای وبمستر ها – قسمت 8 – عیب یابی اسکریپت

شل لینوکس سیستم عیب یابی قدرتمندی ندارد (حد اقل به پای ویژوال استودیو نمیرسد!) اما دستوراتی دارد که به شما در عیب یابی اسکریپت ها کمک میکند. در اسکریپت نویسی پیشرفته, بدون آشنایی با اصول عیب یابی اسکریپت, ممکن است یک خطای تایپی ساده روزها از چشمتان پنهان شود و اسباب زحمت برنامه نویس شود.

AdvancedLinuxShell-8-novinhost.org

برایان کرنیگان (Brian Kernighan), از خالقان لینوکس, و برنامه نویس CronJobs لینوکس, در مورد عیب یابی چنین میگوید» "عیب یابی دو برابر سخت تر از کد نویسی است, بنابراین, اگر شما کد را به هوشمندانه ترین شکل ممکن بنویسید, به تعریف دیگر, برای عیب یابی آن دیگر به اندازه کافی باهوش نیستید."

شل لینوکس هنگام بروز خطا در اجرای اسکریپت, شماره سطری که در آن خطا را تشخیص داده را چاپ میکند, این شماره الزاما شماره سطری نیست که خطا در آن رخ داده است, به مثال زیر توجه کنید:

#!/bin/bash

# missing-keyword.sh

# What error message will this script generate? And why?

for a in 1 2 3

do

  echo "$a"

# done     # Required keyword 'done' commented out in line 8.

exit 0     # Will not exit here!

# === #

# From command line, after script terminates:

  echo $?    # 2

خروجی به این صورت خواهد بود:

missing-keyword.sh: line 10: syntax error: unexpected end of file

       

میبینید که خطا در سطر 10, یعنی جایی که دستور exit 0      قرار دارد, تشخیص داده شده, در حالی که علت اصلی خطا غیر فعال کردن دستور done در سطر 8 است (# done     )

اگر تازه از ویندوز به لینوکس مهاجرت کرده باشید, با space  ها مشکل خواهید داشت, فاصله ها در لینوکس به اندازه دستورات مهم هستند, اسکریپت زیر قصد دارد همه فایل هایی که در نام خود فاصله دارند را حذف کند:

#!/bin/bash
 
#  This script is supposed to delete all filenames in current directory
#+ containing embedded spaces.
#  It doesn't work.
#  Why not?
 
 
badname=`ls | grep ' '`
 
# Try this:
# echo "$badname"
 
rm "$badname"
 
exit 0

اشکالی که وجود دارد اینجاست که دستور rm فاصله را به عنوان جدا کننده فایل ها میشناسد, و اگر از rm بخواهیم یک فایل به نام "file one"را حذف کند, سعی خواهد کرد فایل های file و one را حذف کند, چرا که فاصله میان آنها را به عنوان جدا کننده میشناسد.

برای رفع این اشکال, اولا باید سعی کنیم در لینوکس به جای فاصله از '_' در نام گذاری ها استفاده کنیم, دوما: لینوکس متغیری سراسری به نام IFS دارد که جدا کننده های فایل ها را مشخص میکند, در صورتی که با دستور IFS=$'\n' این متغییر را برابر خط جدید "Enter" قرار دهیم, دیگر با کاراکتر فاصله به عنوان جدا کننده رفتار نخواهد کرد, راه حل سوم بسیار ساده تر است, به جای اسکریپتی که در بالا نوشتیم میتوانیم با کمک regex از rm بخواهیم همه فایل های فاصله دار را حذف کند:

rm *\ *
rm *" "*
rm *' '*

در صورتی که اسکریپت طولانی و پیچیده ای مینویسید, بهتر است یک تابع به نام debecho تعریف کنید, وظیفه این تابع این است که در صورت فعال بودن حالت Debug, خروجی های مربوط به عیب یابی را چاپ کند, تابع debecho میتواند به صورت زیر تعریف گردد:

debecho () {
  if [ ! -z "$DEBUG" ]; then
     echo "$1" >&2
  fi
}

حالا در صورتی که به متغیر DEBUG مقدار بدهید, حالت عیب یابی فعال شده و دستور debecho $Whatever مقدار متغیر مربوطه را چاپ خواهد کرد, چاپ کردن مقدار متغیر ها کمک میکند از صحت مقدار اختصاص یافته اطمینان حاصل کنید.

دستور tee نیز کمک میکند از خروجی دستور هایی که به ورودی دستوری دیگر انتقال میابد مطلع شوید.

به طور مثال اگر با دستور command1 | command2 خروجی دستور1 را به ورودی دستور 2 هدایت کرده باشید, خروجی دستور1 را نخواهید دید, اگر دستور tee را بین این دو قرار دهیم, علاوه بر هدایت خروجی دستور اول به دستور دوم, خروجی دستور اول در خط فرمان چاپ خواهد شد.

نتیجه به این شکل خواهد بود:

Command1| tee | command2

در صورتی که میخواهید بدون اجرا کردن اسکریپت, خطا های آنرا چک کنید, میتوانید اسکریپت را با دستور sh -n  scriptname اجرا نمایید, نوشتن دستور set –n  در سطر اول داخل اسکریپت هم همین کار را انجام میدهد, تمام اسکریپت برای  بررسی خطا مرور میشود, اما هیچیک از دستورات اجرا نمیشود.

اجرای اسکریپت با دستور sh -v scriptname باعث میشود هر دستور قبل اجرا در خروجی چاپ شود, نوشتن set –v یا set -o verbose در سطر اول اسکریپت نیز همین نتیجه را خواهد داشت.

دستور sh -x scriptname همین کار را انجام میدهد, اما خروجی خلاصه تر خواهد بود.

  • قبلی
  • بعدی

سرور مجازی

  • سرور مجازی امریکا
  • سرور مجازی کانادا
  • سرور مجازی انگلیس
  • سرور مجازی المان
  • سرور مجازی فرانسه
  • سرور مجازی هلند
  • سرور مجازی ایران زیرساخت
  • سرور مجازی ایران آسیاتک
  • سرور مجازی ایران پارس آنلاین
  • سرور مجازی ایران تبیان

هاست

  • هاست رایگان
  • هاست ایران
  • هاست لینوکس
  • هاست سی پنل
  • هاست دانلود
  • هاست ارزان
  • هاست وردپرس
  • هاست جوملا
  • هاست سایت
  • هاست نامحدود

کولوکیشن

  • دیتاسنتر تبیان
  • دیتاسنتر زیر ساخت
  • دیتاسنتر اسیاتک
  • دیتاسنتر نوین هاست
  • دیتاسنتر افرانت
  • دیتاسنتر جایگاه
  • دیتاسنتر شهراد شبکیه
  • دیتاسنتر پارس انلاین

سرور اختصاصی

  • سرور اختصاصی امریکا
  • سرور اختصاصی کانادا
  • سرور اختصاصی انگلیس
  • سرور اختصاصی هلند
  • سرور اختصاصی فرانسه
  • سرور اختصاصی المان
  • سرور اختصاصی ایران تبیان
  • سرور اختصاصی ایران پارس انلاین
  • سرور اختصاصی ایران زیرساخت
  • سرور اختصاصی ایران اسیاتک

ارتباط با ما

  • تهران - بلوار فردوس - خیابان احمدی - پلاک 17 - واحد 30
  •  تلفن : 91070308 -  021  (10خط)
  •  تلفن : 44041877 - 021
  •  admin [at] novinhost.org
  •  تلگرام :   novinhost_org@
  •  کانال تلگرام :   novinhost@
تمام حقوق مادی و معنوی این وب سایت محفوظ و متعلق به نوین هاست می باشد.

FaceBooklinkedinتوییترgoogle+YouTubeinstagramکانال اپارات نوین هاست

بازگشت به بالا