خط فرمان لینوکس

ترجمه فارسی LinuxCommand.org

خط فرمان لینوکس

ترجمه فارسی LinuxCommand.org

متغیرها

متغیرها

#!/bin/bash

# sysinfo_page - HTML اسکریپتی برای تولید یک فایل‎ 

cat <<- _EOF_
    <html>
    <head>
        <title>
        My System Information
        </title>
    </head>

    <body>
    <h1>My System Information</h1>
    </body>
    </html>
_EOF_ 

حال که اسکریپت قابل کارکرد خود را داریم، بیایید آن را بهبود بدهیم. اول از همه، برخی تغییرات ایجاد خواهیم نمود زیرا می‌خواهیم تنبل باشیم. در اسکریپت فوق، می‌بینیم که عبارت ‎"My System Information"‎ تکرار می‌شود. این تایپ کردن بیهوده است (و کار اضافی!) بنابراین آن را به این صورت بهبود می‌دهیم:

#!/bin/bash

# sysinfo_page - HTML اسکریپتی برای تولید یک فایل‎ 

title="My System Information"

cat <<- _EOF_
    <html>
    <head>
        <title>
        $title
        </title>
    </head>

    <body>
    <h1>$title</h1>
    </body>
    </html>
_EOF_ 

به طوری که می‌توانید مشاهده کنید، یک سطر به ابتدای اسکریپت اضافه کردیم و دو موردِ وجود عبارت ‎"My System Information"‎ را با ‎$title‎ تعویض نمودیم.

متغیرها

آنچه ما انجام داده‌ایم معرفی ایده بسیار اساسی متغیرها است که تقریباً در هر زبان برنامه‌نویسی ظاهر می‌شود. متغیرها محدوده‌هایی از حافظه هستند که می‌توانند برای ذخیره اطلاعات و مراجعه به آنها بواسطه یک نام، به کار بروند. در مورد اسکریپت خودمان، ما متغیری به نام ‎"title"‎ ایجاد کردیم و عبارت ‎"My System Information"‎ را در حافظه قرار دادیم. داخل here script که شامل HTML ما است، از ‎"$title"‎ استفاده می‌کنیم که به پوسته بگوییم بسط پارامتر را انجام بدهد و نام متغیر را با محتوای متغیر تعویض نماید.

هر گاه پوسته کلمه‌ای را که با یک ‎"$"‎ شروع شود مشاهده کند، تلاش می‌کند آنچه به آن اختصاص داده شده را بیابد و جایگزین آن سازد.

چگونگی ایجاد یک متغیر

برای ایجاد یک متغیر، یک سطر در اسکریپت خود قرار بدهید که شامل نام متغیر و به دنبال آن بلافاصله علامت تساوی‎ ("=")‎ باشد. هیچ فاصله‌ای مجاز نیست. بعد از علامت تساوی، اطلاعاتی را که مایل به ذخیره هستید تخصیص بدهید.

نام متغیرها از کجا ناشی می‌شوند؟

شما آنها را می‌سازید. درست است، شما نامها را برای متغیرهایتان انتخاب می‌کنید. چند قاعده وجود دارد.

  1. نامها باید با یک حرف شروع بشوند.
  2. یک نام نباید محتوی فاصله‌ها باشد. به جای آن از underscoreها(خط زیر) استفاده کنید.
  3. نمی‌توانید علامت‌های نشانه‌گذاری را به کار ببرید.

این مطلب چگونه تنبلی ما را توسعه می‌دهد؟

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

همچنانکه شما اسکریپت‌های بیشتر و بیشتری می‌نویسید (یا هر نوع برنامه‌نویسی دیگری انجام می‌دهید)، خواهید آموخت که برنامه‌ها اصلاً به ندرت تکمیل می‌شوند. آنها به وسیله تولید کنندگان‌شان و سایرین ویرایش می‌شوند و بهبود می‌یابند. به هر حال، این همان موردی است که توسعه منبع باز متوجه آن است. بیایید فرض کنیم شما می‌خواستید در نگارش قبلی اسکریپت، عبارت ‎"My System Information"‎ را به ‎"Linuxbox System Information."‎ تغییر بدهید، شما می‌بایست در دو محل این را تعویض می‌کردید. در نگارش جدید با متغیر title فقط در یک محل باید آن را تعویض کنید. چون اسکریپت ما اینقدر کوچک است، شاید این موضوع کم اهمیتی به نظر آید، اما چنانچه اسکریپت بزرگتر و پیچیده‌تر بشود، بسیار با اهمیت می‌گردد.

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

موقعی که شما نشست پوسته خود را آغاز می‌کنید، برخی متغیرها از قبل توسط فایل راه‌اندازی که قبلاً دیدیم، برقرار گردیده‌اند. برای دیدن تمام متغیرهایی که در محیط شما هستند، فرمان printenv را به کار ببرید. یک متغیر در محیط شما محتوی نام میزبان برای سیستم شما است. ما به این صورت این متغیر را به اسکریپت‌مان اضافه می‌کنیم:

#!/bin/bash

# sysinfo_page - HTML اسکریپتی برای تولید یک فایل‎ 

title="System Information for"

cat <<- _EOF_
    <html>
    <head>
        <title>
        $title $HOSTNAME
        </title>
    </head>

    <body>
    <h1>$title $HOSTNAME</h1>
    </body>
    </html>
_EOF_
       

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