بسیاری گمان میکنند برای خواندن سطرهای یک فایل متن، باید یک حلقه for را به کار ببرند. این در بهترین حالت، بد ترکیب و کم بازده است، و در بسیاری از موقعیتها شکست میخورد. شما در عوض باید یک حلقه while به کار ببرید. چرای آن در اینجاست.
اول، روش درست:
$ cat afile ef gh * $ while IFS= read -r aline; do echo "$aline" ; done < afile ef gh *
حال، سعی در استفاده از for:
ادامه مطلبفرمان ls(1) برای نشان دادن صفات یک فایل منفرد به شما(حداقل در برخی حالتها) نسبتاً مناسب است، اما وقتی از آن تقاضای یک لیست از فایلها را دارید، مشکل عظیمی وجود دارد: یونیکس در نام فایل تقریباً هر کاراکتری، از جمله فضای سفید، سطر جدید، علامت لوله(pipe)، و تقریباً هر مورد دیگری را که شما همیشه به عنوان جدا کننده استفاده میکنید، به استثنای NUL مجاز میداند. طرحهای پیشنهادی برای کنار گذاشتن و اصلاح این مطلب داخل POSIX وجود دارد، اما در مواجه با موقعیت جاری، آنها کمکی نخواهند بود (همچنین صفحه چگونه به طور صحیح با نام فایلها رفتار کنیم را ببینید).
ادامه مطلببدون چون و چرا شما باید از اینکه Bash چگونه فرمانهای شما را میخواند و آنها را به کُد قابل اجرا تجزیه میکند،، درک مناسبی داشته باشید. دانستن آنکه Bash چطور با کُد شما کار میکند، کلید نوشتن کُدی است که در Bash به خوبی کار کند.
ادامه مطلبمحاسبات در BASH فقط حساب اعداد صحیح است. شما نمیتوانید حساب ممیز شناور در Bash انجام دهید، اگر آن توانایی را لازم دارید، پرسش و پاسخ شماره 22 را ببینید.
همچنین گفتار Bash hackers را در باره نظریه دستور زبان کامل، ملاحظه کنید.
ترکیب $[ ] نکوهیده شده است.
برای آنکه به Bash بگوییم با اعداد به جای رشته، به عنوان اعداد صحیح رفتار نماید، و عملیات اصلی حساب را با آنها انجام بدهد، چند روش وجود دارد. اولین آنها استفاده از فرمان let است:
ادامه مطلب
این مطلب مقولهای را تشریح مینماید که احتمالاً مهمترین مبحث در باره برنامهنویسی پوسته است و بیش از همه به طور نادرست فهمیده شده است.
بدون قید وشرط واجب است شما قبل از انجام هر کار مهم در پوسته، به طور کامل تمام آنچه در اینجا تشریح میگردد را درک کنید . درست نفهمیدن آنکه شناسهها کدامند و تفکیک کلمه چطور عمل میکند، حتی در کُدی که شما کنترل کردهاید و به نظر میرسد به خوبی کار میکند، منجر به باگهای غیر منتظره، و در حالتهای وخیمتر، انحراف شدید و از دست رفتن دادهها میگردد.
ادامه مطلب