| ESH(1) | ESH(1) |
نام (NAME)
esh - سیستم قالبساز ساده مبتنی بر شل
خلاصه دستور (SYNOPSIS)
esh [-d] [-o output] [-s shell] [--] file [variable ...]
esh <-h | -V>
توضیحات (DESCRIPTION)
دستور esh (شل توکار / embedded shell) یک موتور قالبساز برای ارزیابی دستورات شل قرارگرفته در قالبهای دلخواه است. این ابزار شبیه به ERB (Embedded RuBy) برای شل عمل میکند و هدف آن قالبسازی برای فایلهای پیکربندی است. برخلاف ERB، این ابزار امکان گنجاندن (include) یک قالب ESH درون قالبی دیگر را فراهم میآورد (از نسخه 0.2.0 به بعد).
دستور esh فایل قالب (file)، یا در صورت مشخص شدن “-”، ورودی استاندارد (stdin) را به دنبالهای از دستورات شل تبدیل میکند. دستورات میان برچسبهای <% و %> بدون تغییر منتقل میشوند، و سایر بخشها اسکیپ شده و پیشوند دستور printf به آنها افزوده میشود. این دستورات در نهایت با استفاده از shell ارزیابی و اجرا میشوند (مگر اینکه گزینه -d مشخص شده باشد).
گزینهها (OPTIONS)
-d
-o file
-s shell
-h
-V
محیط (ENVIRONMENT)
دستور esh میتواند با استفاده از متغیرهای محیطی زیر پیکربندی شود:
ESH_AWK
ESH_MAX_DEPTH
ESH_SHELL
متغیرهای محیطی اضافی زیر درون قالب و برای فرایندهای ایجادشده توسط esh در دسترس هستند:
ESH
وضعیت خروج (EXIT STATUS)
دستور esh با وضعیت خروج shell یا awk خاتمه مییابد، مگر آنکه پیش از تبدیل قالب خطایی رخ داده باشد.
ساختار دستوری قالب (TEMPLATE SYNTAX)
ابزار ESH دارای دو برچسب برای کدهای شل، یک برچسب برای گنجاندن (include)، برچسب توضیحات (کامنت) و روشی برای اسکیپ کردن جداکنندههای برچسب است.
<% commands %>
<%= values %>
<%+ filename %>
اگر filename یک مسیر نسبی باشد، بر اساس دایرکتوری فایل قالبی که این برچسب در آن قرار دارد ارزیابی و حل میشود. اگر قالب از ورودی استاندارد (stdin) خوانده شود، گنجاندنهای سطح اول نسبت به دایرکتوری کاری فعلی ارزیابی میشوند. لطفاً توجه داشته باشید که عملیات گنجاندن در طول مرحله تبدیل پردازش میشود، نه در مرحله ارزیابی و اجرا؛ بنابراین filename نمیتواند یک عبارت یا متغیر باشد!
برخلاف سایر موارد، این برچسب باید در همان خط بسته شود، در غیر این صورت خطای نحوی رخ میدهد.
<%# comment %>
-%>
<%%
%%>
برچسبهای باز و بسته ممکن است در یک خط نباشند.
متنهای خارج از برچسبها به صورت متن ساده در نظر گرفته میشوند، اما تحت تأثیر کدهای شل برچسبگذاریشده پیرامون خود قرار میگیرند. به عنوان مثال، متنی که با یک دستور شرطی برچسبگذاریشده if احاطه شده باشد، تنها در صورتی در خروجی ظاهر میشود که شرط درست (true) باشد.
مثالها (EXAMPLES)
nginx.conf.esh
http {
access_log <%= $logs_dir/access.log %> main;
resolver <%= $(sed -En 's/^nameserver ([^#]+)/\1/p' /etc/resolv.conf) %>;
<% if nginx -V 2>&1 | grep -q lua-nginx-module; then -%>
lua_package_path '<%= $(pkg-config --variable=INSTALL_LMOD lua) %>/?.lua';
<% fi -%>
<%+ ./http-common.esh %>
<%# The rest of the config is omitted %>
}
برای تولید فایل پیکربندی نهایی، این دستور را اجرا کنید:
esh -o nginx.conf nginx.conf.esh logs_dir=/var/log/nginx
نویسندگان (AUTHORS)
نویسنده esh جاکوب جیروتکا (Jakub Jirutka) است.
گزارش باگها (REPORTING BUGS)
گزارش باگها و مشکلات را به بخش ردیابی مشکلات پروژه ارسال کنید: https://github.com/jirutka/esh/issues.
همچنین ببینید (SEE ALSO)
sh(1)
| 2024-07-05 |