ছাড়া অন্য কোনও সরঞ্জামের প্রয়োজন নেই /bin/sh
। ফর্মের একটি টেমপ্লেট ফাইল দেওয়া
Version: ${version}
Path: ${path}
এমনকি মেশানো শেল কোড সহ অন্তর্ভুক্ত
Version: ${version}
Path: ${path}
Cost: ${cost}\$
$(i=1; for w in one two three four; do echo Param${i}: ${w}; i=$(expr $i + 1); done)
এবং একটি শেল পার্সেবল কনফিগারেশন ফাইলের মতো
version="1.2.3-r42"
path="/some/place/under/the/rainbow/where/files/dance/in/happiness"
cost="42"
এটি প্রসারিত করা সহজ বিষয়
Version: 1.2.3-r42
Path: /some/place/under/the/rainbow/where/files/dance/in/happiness
Cost: 42$
Param1: one
Param2: two
Param3: three
Param4: four
প্রকৃতপক্ষে, শেল ভেরিয়েবলের কনফিগারেশন ফাইলের config_file
পথ এবং টেমপ্লেট ফাইলে যাওয়ার পথটি দেওয়া হয়েছে template_file
, আপনাকে যা করতে হবে তা হ'ল:
. ${config_file}
template="$(cat ${template_file})"
eval "echo \"${template}\""
এটি টেমপ্লেট ফাইল (@ এমটিনবার্গের সমাধান) হিসাবে সম্পূর্ণ শেল স্ক্রিপ্ট না হওয়ার চেয়ে সম্ভবত সুন্দর।
সম্পূর্ণ নিষ্পাপ টেমপ্লেট সম্প্রসারণ প্রোগ্রাম:
#!/bin/sh
PROG=$(basename $0)
usage()
{
echo "${PROG} <template-file> [ <config-file> ]"
}
expand()
{
local template="$(cat $1)"
eval "echo \"${template}\""
}
case $# in
1) expand "$1";;
2) . "$2"; expand "$1";;
*) usage; exit 0;;
esac
এটি প্রসারকে স্ট্যান্ডার্ড আউটপুটে আউটপুট দেবে; স্ট্যান্ডার্ড আউটপুটটিকে কেবল একটি ফাইলে পুনর্নির্দেশ করুন বা কাঙ্ক্ষিত আউটপুট ফাইল তৈরি করতে উপরের সুস্পষ্ট ফ্যাশনে পরিবর্তন করুন।
ক্যাভেটস: ফাইলে আনসকেপড ডাবল কোটস ( "
) থাকা থাকলে টেমপ্লেট ফাইলের প্রসারণ কাজ করবে না । সুরক্ষার কারণে, আমাদের সম্ভবত কিছু স্পষ্ট বিচক্ষণ চেক অন্তর্ভুক্ত করা উচিত বা আরও ভাল, যদি টেম্পলেট ফাইলটি বাহ্যিক সত্তার দ্বারা উত্পন্ন হয় তবে শেল এ্যাস্কিং ট্রান্সফর্মেশন সম্পাদন করা উচিত।