انجمن‌های فارسی اوبونتو

لطفاً به انجمن‌ها وارد شده و یا جهت ورود ثبت‌نام نمائید

لطفاً جهت ورود نام کاربری و رمز عبورتان را وارد نمائید


توزیع گنو/لینوکس اوبونتو ۲۰ ساله شد 🎉

نویسنده موضوع: اسکریپت نویسی شل،چگونه و از کجا؟!+یک سوال ابتدایی  (دفعات بازدید: 6088 بار)

0 کاربر و 1 مهمان درحال مشاهده موضوع.

آفلاین senaps

  • Jr. Member
  • *
  • ارسال: 71
  • جنسیت : پسر
    • دست نوشته هام
سلام....
اول سوالم رو میپرسم:
تو برنامه نویسی شل،معمولا بعد از اینکه نوشتن متغییر و خوندن و نمایش دادن رو یاد میگیری،باید بتونی یه برنامه بنویسی که برای مثال دو تا ورودی رو بگیره وبا هم جمع کنه....
من بیش از 100 هزار حالت!! رو تست کردم،هیچ کدوم جواب نداد....!@!


#!/bin/sh
var x
var y
read $x
read $y
echo $x + $y


حتی نوشتن یه متغییر دیگه و انچام عملیات جمع رو اون،و انواع حالت های قرار گرفتن پرانتز یا "" یا حتی ' ' رو هم تست کردم!! نشد که نشد...در نهایت برای همه،نشون میداد که x+y حالا بسته به نوع عملایت که نوشته بودم،یه پرانتز یا سمی کالون یا کوتیش یا ... رو بهش اضافه میکرد!!
میشه بگید چجوری باید این کار رو بکنم؟!( جمع دو عدد!)

کلا میشه یه منبع رو معرفی کنین که اینجوری کد نویسی رو یاد بگیرم؟ هر چی گشتم،نمونه هایی بودن که خیلی سخت تر بود از یادگیری c++ از اموزش های به زبان روسی!!
واقعا هیچی ازشون نفهمیدم اونم بعد از حدود 3 سال برنامه نویسی نیمه حرفه ای!!

آفلاین B

  • Sr. Member
  • *
  • ارسال: 354
  • جنسیت : پسر
expr
انجام عملیات ریاضی بر روی متغیر ها :

expr 1 + 2
------
گوگل کن

آفلاین senaps

  • Jr. Member
  • *
  • ارسال: 71
  • جنسیت : پسر
    • دست نوشته هام
"گوگل کن"
ممنون از راهنمایی.... راستش زیاد گشتم...ولی همه ی راهنما هایی که بود،مثل این تاپیک بودن:
http://forum.ubuntu.ir/index.php/topic,10418.15.html
برا همین نتونستم چیز خاصی ازشون بفهمم....مخصوصا که بنا به دلایلی نمیتونم اوبنتو رو بوت کنم و مجبورم با ویندوز بیام رو نت.....

آفلاین B

  • Sr. Member
  • *
  • ارسال: 354
  • جنسیت : پسر

آفلاین ham!d

  • High Sr. Member
  • *
  • ارسال: 599
میشه یه منبع رو معرفی کنین که کد نویسی رو یاد بده
Beginning Shell Scripting
Linux Shell Scripting with Bash
Advanced Bash-Scripting Guide[/left]
« آخرین ویرایش: 28 فروردین 1391، 08:30 ب‌ظ توسط Dream »

آفلاین B

  • Sr. Member
  • *
  • ارسال: 354
  • جنسیت : پسر
کتاب سومیه خیلی خوبه ؛ پیشنهاد میشه
دنبالش بودم بزارمش ؛ اسمش یادم نمیومد

آفلاین senaps

  • Jr. Member
  • *
  • ارسال: 71
  • جنسیت : پسر
    • دست نوشته هام
بش با شل،تفاوت دارن؟
چیزی که استادمون احتملا درس میده،همون شل هستش....
چیزی که به درد من میخوره هم همین مسئله هستش!!!(یه سری کد رو بنویسی که کار خاصی رو توی شل انجام بدن!و مثلا مجموعه ی اونها،مجموعه ای عملیات رو انجام بده!!!!
حالا من نمیدونم،کد های بش و شل چقد تفاوت دارن یا اصولا این دوتا یکی هستن یا دوتا.....باید برم تحقیق کنم تا فردا!! تقصیر خودم بوده که این همه حساسیت روی موضوع ایجاد کردم و بعدش ولش کردن تا 8 ساعت مونده به ارائه ی مطلب 4 ساعته در مورد اسکریپت نویسی شل!!!
فک نمیکردم که اینقد سخت بشه براش داکیومنت پیدا کرد!!!
ممنون....کتاب ها رو باید بشینم بخونم ببینم چی میگن!

آفلاین HAMANN

  • Newbie
  • *
  • ارسال: 14
معمولا اکثر دستورات یکسان هستند.

بیش تر از شل استفاده می کنند.

آفلاین ham!d

  • High Sr. Member
  • *
  • ارسال: 599
کتاب سومیه خیلی خوبه ؛ پیشنهاد میشه
آره خوبه منم خوندمش  ;)
« آخرین ویرایش: 06 آذر 1390، 11:24 ب‌ظ توسط Dream »

آفلاین senaps

  • Jr. Member
  • *
  • ارسال: 71
  • جنسیت : پسر
    • دست نوشته هام
نقل‌قول
یک سوال خارج از موضوع تاپیک: وضیعت bash (یا zsh ،chsh و...) نسبت به یک زبان برنامه نویسی چیه؟ بش هم زبانه؟ شل چه طور؟ اصولاً اینقدر قدرتمند و انعطاف پذیر هستند که بشه با هاشون برنامه نویسی کرد؟
بش و شل نسبت به لینوکس همون حالی رو دارند که داس نسبت به ویندوز داره؟

بش با شل، تفاوتشون از نظر تعریف در چیه؟


من که خوب مشخصا نسبت به اساتید چیزی حالیم نیست!! حالا اون چیزی که فکر میکنم درسته رو میگم،دوستان جواب میدن منم خودم رو اصلاح کنم ببینم چقد میتونم درست بگم!!اینایی که میگم،همه از اونجایی میاد که دو هفته ی پیش،ارائه مطلب داشتم در مورد شل،و یه سری چیزا رو از ویکی یا داکیومنت های دیگه دوبله کردم به فارسی!!:

فک کنم بش از همه ی شل ها کامل تر و یا حداقل معروف تره و بیشتر استفاده میشه!!(ویکی پدیا!)

ظاهرا،با داشتن کاربری ادمین یا روت،و با در دست داشتن شل،میشه هر کاری که دلت میخواد بکنی!!!(برای مثال،فایل گراب که برا بوت هست،رو در حالت عادی نمیشه ادیت کرد،ولی با 2 خط کد زدن توی شل یا همون ترمینال خودمون،وضعیتش عادی میشه و مثل بقیه ی فایل ها میشه ادیتش کرد!! من با این تکنیک،ترتیب بوت 25 تا سیستم سایت دانشگاه رو اصلاح کردم و ویندوز رو بردم بالا تر از لینوکس!!).....اما در مورد اینکه بشه باهاشون برنامه نویسی کرد؟ راستش فک نکنم.....یعنی خوب میشه براشون اسکریپت نوشت،و اینا هم اجرا میکنن بدون هیچ حرف اضافه ای!!!
کد های نوشته شده رو هم میشه توی یه فایل sh. ذخیره کرد و توی شل(بش،ترمینال یا شل مجازی، یا هرکدوم دیگه!) اجراش کرد و اون خودکار کل اون کارها رو انجام میده!!
مثلا تو همون کار سیستم ها که گرابشون رو تصحیح کردیم،استادم بهم کمک کرد که فایل sh. رو درست کنم،بعدش هم دیگه فقط رو سیستم ها کاربر رو روت میکردیم و کد ها فایل رو اجرا میکردیم،فایل cfg گراب رو پیست میکردیم و تموم!!! کاری که برا هر سیستم تقریبا 10 مین وقت میگرفت،شد 30 ثانیه برا هر سیستم...پ



تفاوت تعریف هم فکر کنم که شل رابط اصلی ارتباط با کرنل هستش...حالا ما انواع شل داریم،یکیش بش...و غیره....همه یه نوع شل هستن که معروف ترینش همون شل خودمون هست!
داکیومنت انگلیسی شل در ویکی پدیا،کل این مسایل رو توضیح داده...

آفلاین fzerorubigd

  • Hero Member
  • *
  • ارسال: 758
  • جنسیت : پسر
  • گوگل دوست خوبیه، فقط باید ازش بپرسی
    • یادداشتهای بیت نیمسوز
شل یا همون پوسته جایی هستش که دستورات باید تفسیر و اجرا بشن.
بر خلاف ویندوز، لینوکس فقط از شما یه شل میخواد. ولی هیچوقت نمیگه که شما باید از شل فلان یا بهمان استفاده کنید. انتخاب یک شل به عهده شماست و من به شخصه zsh رو ترجیح میدم.
اما اینکه آیا قابلیتهای یک زبان برنامه نویسی کامل رو داره، باید بگم نه،‌هدف این دو تا اصلا با هم یکسان نیست که بخواد شبیه اون هم بشه.
برای لینوکس شلهای مختلفی نوشته شده،‌ یه جور استاندارد رو پیاده سازی میکنن (میشه گفت استاندارد اصلی همون bash هستش) ولی یه سری قابلیتها هر کدوم بهش اضافه میکنن. مثلا تو zsh اگه اسم دایرکتوری رو هم بنویسی و اینتر بزنی دایرکتوری جاری رو تغییر میده به اون دایرکتوری، و نیازی به زدن دستور cd نیست. منتها من همیشه cd رو میزنم چون استاندارده.
از طرفی دستورات داخلی خود شل خیلی محدوده، بیشتر برنامه های اجرایی که در کنار شل قرار میگیرن کل کار رو انجام میدن مثلا دستوراتی مثل cat - echo - و .. اینها برنامه های اجرایی کاملا مجزا از شل هستن  و شل فقط از اونها استفاده میکنه.

-- و برای جمع دو عدد که قبلا توی I و J نوشته شده، میتونی از این روش هم استفاده کنی :
echo $(($I+$J))
و این روش،‌روش اصلی شل هستش، دستور expr یه برنامه کاملا مجزاست و به خودی خود ربطی به شل نداره.

آفلاین fzerorubigd

  • Hero Member
  • *
  • ارسال: 758
  • جنسیت : پسر
  • گوگل دوست خوبیه، فقط باید ازش بپرسی
    • یادداشتهای بیت نیمسوز
و فکر نمیکنم گذاشتن لینک دانلود این فایلها با این شرایط که میگی از مجوزشون خبر نداری، درست باشه. اسمشون رو که بذاری کافیه هر که بخواد، گوگل میتونه کمکش کنه :)

آفلاین senaps

  • Jr. Member
  • *
  • ارسال: 71
  • جنسیت : پسر
    • دست نوشته هام
"و این روش،‌روش اصلی شل هستش، دستور expr یه برنامه کاملا مجزاست و به خودی خود ربطی به شل نداره."

اول اینکه ممنون از توضیحات کامل و بسیار عالی شما....
سوالم اینه که اون روشی که برای چاپ نتیجه ی دو متغییر گفتید،ایا اون کد رو میشه توی یه فایل sh. نوشت و بعد با شل اجراش کرد؟!(خودم که فک میکنم بشه!)

آفلاین fzerorubigd

  • Hero Member
  • *
  • ارسال: 758
  • جنسیت : پسر
  • گوگل دوست خوبیه، فقط باید ازش بپرسی
    • یادداشتهای بیت نیمسوز
بله میشه. فقط برای اینکه شل بدونه با چی باید اجراش کنه لزومی به داشتن پسوند sh نیست کافیه که خط اول فایل این باشه :
#!/bin/bash
[/code
اینجوری به شل میفهمونی که باید با bash این فایل رو اجرا کنه (میشه به جاش هر شل دیگه ای هم گذاشت، حتی PHP و Perl و ....)

آفلاین senaps

  • Jr. Member
  • *
  • ارسال: 71
  • جنسیت : پسر
    • دست نوشته هام
بله....
ممنون امروز سر کلاس اجرا کردم و بسیار هم عالی بود....ممنون از دوستان گلم....