نمایش نتایج: از شماره 1 تا 7 , از مجموع 7

موضوع: لينوكس براي همه

  1. #1
    کاربرسایت HAMIDREZA آواتار ها
    تاریخ عضویت
    ۸۶-۰۸-۱۱
    نوشته ها
    1,606
    سپاس ها
    0
    سپاس شده 0 در 0 پست

    لينوكس براي همه

    لينوكس براي همه
    متغيرها و عبارات شرطي در Shell



    در شماره گذشته، با يك برنامه نمونه آشنا شديد، فكر ميكنم حالا وقتش است كه نگاهمان عمق بيشتري به مساله پيدا كند و قدرت برنامهنويسي پوسته ( Shell) را بيشتر درك كنيم. پوسته يكي از آسانترين زبانهاي برنامهنويسي است، يكي از دلايلش اين است كه شما ميتوانيد تكهكدهاي كوچك خود را پيش از اينكه وارد اسكريپتهاي بزرگتر وارد كنيد، به صورت تعاملي (Interactive) اجرا كنيد. بنابراين پيش از هر چيز ديگري، به سراغ واحدهاي الفبايي يك زبان برنامهنويسي، يعني متغيرها ميرويم.

  2. #2
    کاربرسایت HAMIDREZA آواتار ها
    تاریخ عضویت
    ۸۶-۰۸-۱۱
    نوشته ها
    1,606
    سپاس ها
    0
    سپاس شده 0 در 0 پست

    Re: لينوكس براي همه

    متغيرها

    در پوسته، پيش از استفاده از متغيرها، آنها را تعريف نميكنيم. بلكه، با استفاده از آنها، در لحظه ايجادشان ميكنيم (يعني وقتي كه يك مقداري به متغير پاس ميدهيم.) بهطور پيشفرض، تمام متغيرها بهصورت رشتهاي (String) ذخيره ميشوند حتي اگر اعدادي را به آنها بدهيم. پوسته و برخي از نرمافزارهاي داخلياش رشتههاي عددي را سر موقع عمليات رياضي، به اعداد تبديل ميكنند. لينوكس به كوچكي و بزرگي حروف حساس است، بنابراينAli باali فرق دارد و جفتشان باALI متفاوتند. معمولا در برنامهنويسي لينوكس از حروف كوچك براي نامگذاري متغيرها استفاده ميكنند.

    در پوسته براي دسترسي به محتويات متغير نام آن را بعد از علامت $ ميآوريم. (يا $ را پيش از نام آن متغير ميآوريم. هر كدام را راحتتريد به خاطر بسپاريد) هروقت محتويات يك متغير را خواستيد، بايستي اين $ را قبل از اسمش بياوريد. اگر بخواهيد مقداري به متغير بدهيد، فقط نامش را بياوريد، كه اگر لازم باشد بهصورت ديناميك ايجاد خواهد شد. يكي از سادهترين راهها براي نمايش محتويات متغير، استفاده از echo در ترمينال و بعد آوردن نام متغير بعد از $ است.

    در خط فرمان، ميتوانيد اين موضوع را در عمل ببينيد، اين دستورات را در ترمينال وارد كنيد:
    نكته: توجه داشته باشيد كه چطور كلمه Yes Dear را كه فاصله داشت، داخل نقل قول گذاشتيم. همچنين اين نكته را رعايت كنيد كه دو طرف مساوي نبايد فاصله وجود داشته باشد.

    با كمك دستور read ميتوانيد متغيري را با ورودي از سمت كاربر مقدار دهي كنيد. اين دستور يك پارامتر ميگيرد و آن هم نام متغيري است كه قرار است مقدار را داخلش بريزد و اجرايش به اين صورت است كه منتظر ورود متن از سوي كاربر ميشود. عمليات خواندن وقتي بهپايان ميرسد كه كاربر دكمه اينتر را بزند. وقتي از ترمينال يك متغير ميخوانيد، به علامت نقل قول ديگر نيازي نيست. اين مثال را ببينيد:

  3. #3
    کاربرسایت HAMIDREZA آواتار ها
    تاریخ عضویت
    ۸۶-۰۸-۱۱
    نوشته ها
    1,606
    سپاس ها
    0
    سپاس شده 0 در 0 پست

    Re: لينوكس براي همه

    نقل قول كردن


    قبل از اينكه جلوتر برويم، بگذاريد تكليفمان را با يكي از ويژگيهاي پوسته روشن كنيم: استفاده از نقل قولها. معمولا، پارامترهاي اسكريپتها با كاراكتر فضاي خالي جدا ميشوند (مثل فاصله، تب يا كاراكتر خط جديد) اگر پارامتري داريد كه شامل يك يا چند فضاي خالي است، بايد اين پارامتر را داخل نقل قول بياوريد. عملكرد متغيرها داخل نقل قول، بستگي به نقل قولي دارد كه شما استفاده ميكند. اگر متغيري $ را توي double-quote (نقل قول دوتايي) بياوريد، زمان اجرا با مقدارش جايگزين خواهد شد. اگر متغير را داخل نقل قول تكي (single-quote) بياوريد، در اين صورت هيچ جايگزيني صورت نميگيرد و همان كه نوشتيد به چاپ ميرسد. البته، شما ميتوانيد به طريقه ديگري معني خاص $ را از بين ببريد و آن استفاده از قبل از علامت $ است.

    يك مثال كوچك و سريع بزنيم كه حسابي اثر نقل قول روي متغيرها دستتان بيايد:

    شما ميدانيد كه چطور برنامه را اجرا كنيد، بنابراين، خروجي به اين صورت خواهد بود:

  4. #4
    کاربرسایت HAMIDREZA آواتار ها
    تاریخ عضویت
    ۸۶-۰۸-۱۱
    نوشته ها
    1,606
    سپاس ها
    0
    سپاس شده 0 در 0 پست

    Re: لينوكس براي همه

    متغيرهاي محيطي


    يادتان است در موردPATH صحبت كرديم؟ متغيرهاي محيطي، كه با حروف بزرگ نمايش داده ميشوند، بسته به تنظيمات شخصي شما ساخته ميشوند، در راهنماي دستورات خيلي از اين متغيرها داريم، اما اصليهايش اينهاست كه در جدول 1 مشاهده ميكنيد.

  5. #5
    کاربرسایت HAMIDREZA آواتار ها
    تاریخ عضویت
    ۸۶-۰۸-۱۱
    نوشته ها
    1,606
    سپاس ها
    0
    سپاس شده 0 در 0 پست

    Re: لينوكس براي همه

    متغيرهاي پارامتري


    اگر اسكريپت شما با پارامتر صدا زده شود، متغيرهاي افزون بر اينها ايجاد ميشوند. اگر هيچ پارامتري پاس داده نشود، متغير محيطي $َ كماكان وجود دارد، اما مقدارش صفر است.

    متغيرهاي پارامتري در جدول2 فهرست شدهاند:

    بياييد فرق بين *$ و ؛$ را با يك مثال سريع بفهميم:

    همانطور كه ميبينيد، بدون در نظر گرفتن محتويات نقل قول دوتايي، ؛$ پارامترها را از هم جدا مينويسد. اگر ميخواهيد به پارامترها دسترسي پيدا كنيد، به گمانم $ گزينه بهتري است.

    تمرين: ور رفتن با متغيرهاي محيطي و پارامترها

    پيادهسازي بسيار ساده پارامترها را با اسكريپت زير ميفهميم. فقط يادتان نرود كه بعد از تايپ و ذخيره آن به اسم tryvar، حتما آن را با استفاده از chmod +x tryvar اجرايي كنيد وگرنه اجرا نميشود.

    اگر اين اسكريپت را اجرا كنيد، خروجي زير را ميگيريد:

  6. #6
    کاربرسایت HAMIDREZA آواتار ها
    تاریخ عضویت
    ۸۶-۰۸-۱۱
    نوشته ها
    1,606
    سپاس ها
    0
    سپاس شده 0 در 0 پست

    Re: لينوكس براي همه

    شرايط


    پايهايترين بنياد هر زبان برنامهنويسي، قابليت بررسي شرطها و انتخاب عمليات مختلف از روي نتيجه همين شرطهاست. بياييد اول ساختارهاي شرطياي كه ميتوانيد در پوسته از آنها استفاده كنيد را چك كنيم و بعد برويم سراغ ساختارهاي كنترلياي كه از اين شرطها استفاده ميكنند.

    ميتوان كد خروجي هر اسكريپتي، از جمله اسكريپتي كه خودتان مينويسيد را تست كرد. به همين علت است كه هميشه آخر كد خود بايستي از دستور exit استفاده كنيد.

  7. #7
    کاربرسایت HAMIDREZA آواتار ها
    تاریخ عضویت
    ۸۶-۰۸-۱۱
    نوشته ها
    1,606
    سپاس ها
    0
    سپاس شده 0 در 0 پست

    Re: لينوكس براي همه

    دستور test يا ]


    در عمل ثابت شده كه بيشتر اسكريپتها از علامت ] (براكت باز) ياtest استفاده ميكنند. در اين سيستمها، ] و test هم معنا هستند، با اين تفاوت كه وقتي از ] استفاده ميكنند، آخر دستور يك [ هم ميگذارند كه خوانا باشد. استفاده از علامت براكت [ كمي عجيب بهنظر ميرسد، اما توي كد بسيار خوانا و ساده و مشابه زبانهاي برنامهنويسي ديگر است.

    اين دستورات در پوستههاي يونيكس قديمي برنامههاي خارجياي اجرا ميكردند، اما در نسخههاي جديدتر ديگر پيادهسازيشان داخلي شد. اين نكته را خوب توجه كنيد، به اين علت كه دستور test معمولا در بيرون از اسكريپتهاي پوسته استفاده نميشود، بسياري از كاربران تازهكار با سيستم، اسم برنامههاي خودشان را test ميگذارند. اگر شما هم جزو اين دسته از برنامهنويسها هستيد و اين مشكل را داريد، احتمالا برنامهتان با دستور test پوسته تداخل دارد. براي اينكه بفهميد كدام برنامه اجرا ميشود، از دستور which test استفاده كنيد. اما راهحل مطمئن، همان استفاده ازtest/. است كه بهطور قطع و صد در صد برنامه شما را اجرا ميكند. چقدر خوب است كه شما اين عادت را در خود بهوجود بياوريد كه برنامهها را با ./ اجرا كنيد.

    ساختار دستور شرطي test يكي به اين صورت است. مثلا برنامه زير چك ميكند كه فايل موجود است يا خير:
    نكته: توجه داشته باشيد كه بايستي حتماً بين شرط و علامتهاي [] از كاراكتر فاصله استفاده كنيد. و اگر داريد از شيوه test استفاده ميكنيد هم، يادتان باشد كه بعد از test همواره و بدون هيچ استثنايي فاصله است! اگر ميخواهيدthen را در همان خط شرط بگذاريد، بايستي بعد از براكت بسته، از علامت نقطه ويرگول ( استفاده كنيد.

    براي اطلاع از توضيح test، از اين لينك استفاده كنيد:

    [برای مشاهده لینک ها شما باید عضو سایت باشید برای عضویت در سایت بر روی اینجا کلیک بکنید]

اطلاعات موضوع

کاربرانی که در حال مشاهده این موضوع هستند

در حال حاضر 1 کاربر در حال مشاهده این موضوع است. (0 کاربران و 1 مهمان ها)

موضوعات مشابه

  1. كامپايل كردن سورس كد در لينوكس
    توسط HAMIDREZA در انجمن اموزش کاربردی نرم افزار
    پاسخ ها: 1
    آخرين نوشته: شنبه ۲۵ مهر ۸۸, ۲۳:۴۵
  2. لينوكس خود را بهبود ببخشيم
    توسط HAMIDREZA در انجمن اموزش کاربردی نرم افزار
    پاسخ ها: 2
    آخرين نوشته: جمعه ۲۴ مهر ۸۸, ۲۰:۰۶
  3. هر توزیع لينوكس در یک خط
    توسط ارسطو در انجمن نرم افزار
    پاسخ ها: 0
    آخرين نوشته: چهارشنبه ۱۴ مرداد ۸۸, ۲۰:۱۵
  4. امنيت سرور لينوكس
    توسط ارسطو در انجمن Security&Antivirus
    پاسخ ها: 0
    آخرين نوشته: شنبه ۲۱ اردیبهشت ۸۷, ۲۰:۴۱
  5. فروشگاه اينترنتي لينوكس
    توسط Unknown در انجمن مقالات عمومی
    پاسخ ها: 0
    آخرين نوشته: پنجشنبه ۱۲ مهر ۸۶, ۱۸:۰۲

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •