منبع اصلی نوشتار زیر در این لینک قرار دارد

IFS


متغیر IFS در پوسته‌ها(Bourne، POSIX، ksh، bash) به عنوان جداکننده فیلد ورودی (یا جداکننده داخلی فیلد) به کار می‌رود. در اصل، رشته‌ای از کاراکترهای خاصی است، که موقع تجزیه یک سطر از ورودی، باید با آنها به عنوان جداکننده مابین کلمات/فیلدها، رفتار بشود.

مقدار پیش‌فرض IFS، فاصله، tab، سطرجدید است. (یک رشته سه کاراکتری.) اگر IFS برقرار نباشد(unset)، مانند آن عمل می‌کند که به این مقدار پیش‌فرض تنظیم شده باشد. (این احتمالاً برای سادگی در پوسته‌هایی است که از ترکیب دستوری ‎ $'...'‎ برای کاراکترهای خاص پشتیبانی نمی‌کنند.) اگر IFS به یک رشته تهی تنظیم گردد (که خیلی متفاوت با عدم برقرار بودن--unset-- آن است!)، تجزیه‌ای انجام نخواهد شد.

این متغیر در چند محل مختلف به کار می‌رود. با تعابیر کمی متفاوت:

  • در فرمان read، در صورتیکه چندین نام متغیر به عنوان شناسه فرمان تعیین شده باشند، IFS برای تجزیه سطر ورودی به طریقی که هر متغیر یک فیلد منفرد از ورودی را دریافت نماید، به کار می‌رود. (اگر فیلدهای بیشتری نسبت به متغیرها وجود داشته باشد، آخرین متغیر تمام فیلدهای باقیمانده را دریافت می‌کند.)

  • موقع انجام تفکیک کلمه در یک بسط نقل‌قولی نشده، IFS برای تجزیه محتوای بسط به چندین کلمه، به کار می‌رود.

  • موقع اجرای بسط ‎ "$*"‎ یا‎ "${array[*]}"‎ (* همان @ نیست، و نقل‌قولی شده است -- یادداشت ویژه را ببینید!)، برای ساختن رشته خروجی نهایی، کاراکتر اول از IFS ، بین عناصر جای می‌گیرد

  • ادامه مطلب