awk
awk
ফাংশন চালাতে পারেন । এটি সঞ্চালনের জন্য 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
এক্সিকিউটেবল হলে এটি কাজ করতে পারে তবে এটি "বাশার্কে বা শেল স্ক্রিপ্টে কোনও" ফাংশন সংজ্ঞায়িত "না হলে নয়।