از طریق منوی جستجو مطلب مورد نظر خود در وبلاگ را به سرعت پیدا کنید
Bash تعریف رشته چند خطی متغیر
سرفصلهای مطلب
بیایید فرض کنیم با سناریویی مواجه شده اید که در آن باید یک بلوک چند خطی از رشته را در عملیات برنامه نویسی Bash خود تعریف کنید. اگر روش پیشفرض تعریف یک متغیر را در Bash امتحان کنید، با خطا یا قسمتی از متغیر ناقص مواجه خواهید شد.
این راهنمای سریع روش های تعریف متغیرهای رشته ای چند خطی را با استفاده از کاراکترهای فرار و Heredoc به شما نشان می دهد.
شخصیت های فرار Bash
Bash، مانند بسیاری از زبان های برنامه نویسی، امکان استفاده از کاراکترهای فرار را فراهم می کند. کاراکترهای فرار به ما این امکان را می دهند که تفسیر جدیدی از توالی شخصیت ها را فراخوانی کنیم. اگرچه Bash کاراکترهای فرار مختلفی دارد، اما ما فقط باید به \n (کاراکتر خط جدید) توجه کنیم.
برای مثال، اگر یک رشته چند خطی در یک اسکریپت داشته باشیم، میتوانیم از کاراکتر \n برای ایجاد یک خط جدید در صورت لزوم استفاده کنیم.
نمونه ای از چنین موارد استفاده:
خ= “این یک رشته است\n-و یکی دیگر\n-و یکی دیگر\n-و آخرین”
echo -e $str
اجرای اسکریپت بالا رشته ها را در یک خط جدید که در آن کاراکتر \n وجود دارد چاپ می کند.
HereDoc
روش فوق برای متن خط ساده به خوبی کار می کند. با این حال، اگر ما نیاز داشته باشیم print متنی با سایر کاراکترهای خاص، واکنشهای متقابل و نقل قولها، بهطور غیر ضروری پیچیده میشود. برای حل چنین مشکلی می توانیم از HereDoc استفاده کنیم.
هردوک چیست؟
هردوک یک بلوک کد با هدف خاص است که به پوسته میگوید ورودی را از منبع فعلی بخواند تا زمانی که با یک خط حاوی جداکننده روبرو شود.
نحو هردوک در Bash این است:
جداکننده ها در هردوک می توانند هر رشته ای باشند. با این حال، رایج ترین رشته ها EOF، EOM یا END هستند.
هنگامی که پوسته با جداکننده روبرو می شود، همه متغیرها، دستورات و کاراکترهای خاص را جایگزین می کند و سپس اطلاعات داخل بلوک Heredoc را به دستور اصلی می دهد.
می توانید کاراکترهای خاص، رشته های معمولی، متغیرها و سایر دستورات پوسته را در بلوک Heredoc قرار دهید.
اطمینان حاصل کنید که بلوک Heredoc را با جداکننده خاتمه دهید. هیچ فضای خالی قبل از جداکننده اضافه نکنید.
رشته چند خطی با استفاده از Heredoc
فرض کنید رشته زیر را دارید:
داخل a bash اسکریپت، میتوانیم یک متغیر ایجاد کنیم و رشته بالا را مانند شکل زیر به cat پاس کنیم:
رشته=$(گربه << EOF
<سر>
<بدن>