آموزش بهینه سازی و رفع مشکل دستور شرطی IF در شل اسکریپتینگ

دوستان اگر در حوزه Bash Scripting یا همون Shell Scripting فعالیت می کنند یک مشکل خیلی عمده در نوشتن شرط های if براشون ممکنه پیش بیاد که شاید غیرمنطقی به نظر برسه و اوایل کار در حوزه Script نویسی اذیتتون کنه که میخام بهتون این مشکل رو معرفی کنم ، خوب برای اینکه موضوع به خوبی براتون جا بیوفته به نمونه کد و دستور شرطی زیر دقت کنید ، این کد در زمان اجرا خطا میده اما نکته اینجاست که خطا کجاست :

دوره های شبکه، برنامه نویسی، مجازی سازی، امنیت، نفوذ و ... با برترین های ایران
if [2==2];then
    echo "tosinso"
else 
  echo "tosinso.com"
fi

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

test.sh: 1: test.sh: [2==2]: not found
unexpected operator

اما مشکل خطای بالا چیز پیچیده ای نیست و شاید خنده دار باشه ، مشکل دستور بالا فقط و فقط نذاشتن فاصله مناسب بین هر کدوم از پارامترهای دستوری هست ، یعنی Syntax یا نحوه نوشتن اسکریپت ها در Bash طوری هست که باید فاصله ها رو با دقت رعایت کنید ، حالا ما در ادامه همون دستورات رو وارد می کنیم و اینبار فاصله رو براشون رعایت می کنیم و نتیجه رو مشاهده می کنید که بدون مشکل هست و دستور شرطی ما به درستی اجرا میشه :

if [ "2" == "2" ];then
    echo "tosinso"
else
    echo "tosinso.com"
fi

همونطور که مشاهده می کنید دستور با موفقیت انجام شد و فقط مشکل ما یک Syntax یا نحوه خاص نوشتن و قرار دادن فاصله در کد بود ، شاید به نظر شما خنده دار باشه اما خیلی از کدهایی که در زبان هایی مثل C و ++C نوشته میشه به خاطر نذاشتن یک سمی کولن یا همین فاصله مشکل در اجرا داره ، امیدوارم مورد توجه شما قرار گرفته باشه.

نویسنده : آرتین غفاری

منبع : linux.tosinso.com

هرگونه نشر و کپی برداری بدون ذکر منبع و نام نویسنده دارای اشکال اخلاقی می باشد


نظرات