awkawkফাংশন চালাতে পারেন । এটি সঞ্চালনের জন্য bash, আপনাকে awkএকটি bashশেল কার্যকর করতে হবে bash, সেই ফাংশনের সংজ্ঞাটি ব্যাখ্যা করতে এবং সেই ফাংশনটিকে কল করতে হবে, awkআর্গুমেন্ট হিসাবে পাস করা মান দিয়ে with
তুচ্ছ নয়।
bashসমর্থন ফাংশন রপ্তানি তাই এটি পরবর্তী আমন্ত্রণ পাওয়া যায় bash, যাতে এক পথে ফাংশনের সংজ্ঞা পাস করার bashদ্বারা প্রার্থনা awk:
export -f d2h
awkকমান্ড কার্যকর করার একমাত্র উপায় ( bashএখানে) এর সাথে রয়েছে system("cmd"), print... | "cmd"বা "cmd" | getline। সব ক্ষেত্রে, এটি awkব্যাখ্যা করার জন্য একটি শেল চালান cmd, তবে এটি হবে sh, না bash। সুতরাং আপনাকে এটির জন্য একটি কমান্ড লাইন তৈরি shকরতে হবে যা একটি অনুরোধ যা ফাংশনটি শুরু করার জন্য bashএকটি bashকমান্ড লাইনকে ব্যাখ্যা করে, সুতরাং আপনার উদ্ধৃতি সহ সতর্কতা অবলম্বন করা উচিত:
export -f d2h
<file awk -v q="'" '
function shquote(s) {
gsub(q, q "\\" q q, s)
return q s q
}
{print $1; system("bash -c '\''d2h \"$1\"'\'' bash " shquote($2))}'
এর অর্থ এই নয় যে প্রতিটি লাইনের জন্য একটি shএবং একটি চালানো bash, তাই যথেষ্ট অক্ষম হতে চলেছে। bashএটি পড়া এবং একটি বিভাজনের চেয়ে আরও উল্লেখযোগ্যভাবে আরও অদক্ষ হওয়া শেষ হবে while read loop:
(unset IFS; while read -r a b rest; do
printf '%s\n' "$a"
d2h "$b"
done < file)
d2hএক্সিকিউটেবল হলে এটি কাজ করতে পারে তবে এটি "বাশার্কে বা শেল স্ক্রিপ্টে কোনও" ফাংশন সংজ্ঞায়িত "না হলে নয়।