آموزش‌های خط فرمانی

این وبلاگ تلاش می‌کند گامی در حد بضاعت در جهت آموزش خط فرمان و اسکریپت‌نویسی پوسته گنو-لینوکس بردارد.

آموزش‌های خط فرمانی

این وبلاگ تلاش می‌کند گامی در حد بضاعت در جهت آموزش خط فرمان و اسکریپت‌نویسی پوسته گنو-لینوکس بردارد.

آرایه ها

فصل ششم


آرایه ها

به طوری که قبلاً اشاره شد، BASH سه نوع پارامتر ارائه می‌کند: رشته‌ها، اعداد صحیح، و آرایه‌ها.

بدون تردید رشته‌ها پر استفاده‌ترین نوع پارامترها می‌باشند. اما آنها همچنین، بد رفتارترین نوع پارامترها هستند. اهمیت دارد که به خاطر بسپاریم، یک رشته فقط یک عنصر را نگاه می‌دارد. به عنوان نمونه، گرفتن خروجی یک فرمان، و قرار دادن آن در پارامتر رشته‌ای بدین معنا می‌باشد که پارامتر فقط یک رشته از کاراکترها می‌باشد، صرفنظر از اینکه آیا آن رشته نام بیست فایل، بیست عدد، یا نام بیست نفر را نمایندگی می‌کند.

و همینطور است که همیشه وقتی اقلام چندگانه را در یک رشته منفرد قرار می‌دهید، باید این اقلام را به طریقی از یکدیگر جدا کنید. ما، به عنوان انسان معمولاً می‌توانیم وقتی به یک رشته نگاه می‌کنیم نام فایل‌های مختلف را کشف کنیم. ما فرض می‌کنیم که، شاید، هر سطر در یک رشته نام یک فایل را نشان می‌دهد، یا هر کلمه نام یک فایل را نمایندگی می‌کند. در حالیکه این پنداشت قابل درک است، همچنین به طور ذاتی معیوب است. هر نام فایل منفرد می‌تواند شامل هر کاراکتری باشد که ممکن است شما بخواهید برای جداکردن نام فایل‌ها در یک رشته استفاده کنید. به این معنی که از نظر تکنیکی گفته نمی‌شود که نام اولین فایل در کجای یک رشته به پایان می‌رسد، زیراکاراکتری وجود ندارد که بتواند بگوید: «من به پایان نام فایل اشاره می‌کنم» چون آن کاراکتر خودش می‌تواند بخشی از نام فایل باشد.

غالباً، اشخاص این اشتباه را مرتکب می‌گردند:

    # این در حالت کلی کار نمی‌کند
    $ files=$(ls ~/*.jpg); cp $files /backups/

در حالیکه احتمالاً این می‌تواند ایده بهتری باشد( استفاده از آرایه‌ها که در بخش بعد شرح داده می‌شوند):

    # این در حالت کلی کار می‌کند
    $ files=(~/*.jpg); cp "${files[@]}" /backups/

تلاش اولی در پشتیبان‌گیری از فایل‌های دایرکتوری جاری معیوب است. ما خروجی دستور ls را در یک رشته به نام files قرار داده‌ایم و سپس از بسط پارامتر ‎ $files‎ به صورت غیرنقل‌قولی برای بریدن آن رشته به شناسه‌ها(بر مبنای تفکیک کلمه) استفاده کرده‌ایم. به طوری که قبلاً اشاره شد، تفکیک کلمه و شناسه، یک رشته را از جایی که فضای سفید وجود دارد به قطعاتی برش می‌دهد. استناد به بسط فوق به این معنی است که فرض کرده‌ایم در نام فایل‌های ما هیچ فضای سفیدی نیست، اگر باشد نام فایل به دو نیمه یا بیشتر بریده می‌شود. فرجام: نامساعد.

تنها روش مطمئن نشان دادن عناصر چندگانه رشته در Bash از طریق استفاده از آرایه‌ها می‌باشد. آرایه نوعی متغیر است که رشته‌ها را با اعداد ترسیم می‌کند. این اساساً به معنای آن است که یک لیست شماره گذاری شده از رشته‌ها را نگهداری می‌کند. چون هر یک از این رشته‌ها یک هویت(عنصر) جداگانه است، می‌تواند بدون خطر هر کاراکتری، حتی فضای سفید را در خود داشته باشد.

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

بر خلاف برخی زبانهای برنامه‌نویسی، Bash لیست‌ها، رکوردها و غیره را ارائه نکرده است. فقط آرایه‌ها و آرایه‌های انجمنی( که در نگارش 4 از Bash جدید است).

  • آرایه‌ها: یک آرایه لیست شماره گذاری شده رشته‌ها است: رشته‌ها را با اعداد صحیح مرتبط می‌کند .


ادامه دارد ....

نظرات 0 + ارسال نظر
ایمیل شما بعد از ثبت نمایش داده نخواهد شد