لینوکسی بشیم: متغیرها در bash

رسیدیم به مبحث شیرین(؟) متغیرها در بش. تو این نوشته قصد دارم نکات مربوط به متغیرها رو براتون بگم. این مطلب سومین نوشته از سری نوشته‌های لینوکسی بشیم هست. کسایی که میخوان در زمینه لینوکس شغلی داشته باشن این مطلب به دردشون میخوره. همچنین اگر میخواید برنامه‌نویس خفنی بشید، دونستن این مفاهیم کمکتون میکنه. کسانی هم که کلا سیستم عامل لینوکسی دارن بخونن؛ خوبه براشون.

تو این نوشته فرض بر اینه که شما دانشی ابتدایی در مورد لینوکس دارید. خیلی خوبه که مطالب قبلی این دنباله رو هم خونده باشید.

بریم سر اصل مطلب. قسمت قبلی متغیرها رو دیدیم. یه چیزی که برای تعریف متغیر باید دقت کرد اینه که بین اسمش و علامت مساوی و همچنین بعد مساوی فاصله نذاریم. خوانا شدن رو فراموش کنید (هر چند بعضیا موقع برنامه نویسی هم همینجوری بدون فاصله مینویسن :/ ). چند نمونه خطا ببینیم:

تو اولی وقتی فاصله میذاریم بش اون رو دستور در نظر میگیره و مساوی رو آرگومان اون دستور و خطا میده. تو دومی a رو یه مقدار خالی میده و بعدش میخواد hello رو اجرا کنه که می‌بینه نیستش.

میخوام یه متغیر رو داخل یه رشته استفاده کنم. میتونم اون رو به این شکل بنویسم:

دقت کنید که باید از " استفاده کنیم. اگه از ' استفاده کنیم $ رو به عنوان یه کاراکتر معمولی میگیره. تو تصویر بالا از echo استفاده کردم. میتونم یه متغیر دیگه رو هم همینطوری تعریف کنم:

‌آخرش echo کردم که نگید الکی میگه.

حالا بیاید یه بش جدید باز کنیم یه چیز مهم بگم بهتون:

دیدید؟ توی اون بش دومیه متغیر بش اول ناشناخته هست. برای این که تو تمام بش‌هایی که از بش فعلی به وجود میان یه متغیر شناخته بشه از export استفاده می‌کنیم:

یا میشه همه‌اش رو یه جا انجام داد:

تو قسمت قبل گفتم همه متغیرهایی که تعریف می‌کنیم رشته در نظر گرفته میشن. اگه بخوایم اعمال ریاضی انجام بدیم به مشکل میخوریم:

برای انجام کارای محاسباتی از چند روش استفاده می‌کنیم؛ اولیش let هست که به خود بش اختصاص داره:

اول let رو میذاریم بعد جلوش عبارت رو مینویسیم. باز هم باید بدون فاصله باشد. اگه " بذارید میشه فاصله هم گذاشت:

دیدید؟ ۷۷ به علاوه ۳۳ نمیشه ۱۰۰! حتی متغیر دیگه هم میشه گذاشت. البته بدون $:

اینجا ضرب گذاشتم تا نشون بدم ۹۱ اول نیست. نگید اینم نمیدونستید!

روش دیگه‌ای که خیلی خیلی استفاده میشه استفاده از $ با دو تا پرانتز هست (نوشتنش سخته ولی همه جا کار میکنه):

دقت کنید مساوی رو بیرون و بدون فاصله گذاشتم و داخلش هم از $ استفاده نکردم. هر چند با $ هم میشه ولی چه کاریه. فاصله‌گذاری هوشمند هم اون تو دیده میشه که ایرادی نداره. میشه مساوی رو هم تو برد ولی مقدار رو بدست میاره و سعی میکنه اجراش کنه که ایراد میگیره طبیعتا:

تفریق هم با - انجام میشه که خودتون ببینید.

بحث ما تموم شد اینجا. تو قسمت‌های بعد قصد داریم در مورد if و حلقه‌ها توی بش صحبت کنیم. امیدوارم براتون مفید بوده باشه. اگر نظری یا سوالی هست این پایین بفرمایید.

قسمت قبلی

قسمت بعدی