একটি সম্ভাব্য পন্থা while...read
হ'ল আপনার ফাংশনগুলির মধ্যে এমন একটি কন্সট্রাক্ট স্থাপন করা যা এসটিডিআইএন এর মাধ্যমে ফাংশনে আসা যে কোনও ডেটা প্রক্রিয়া করবে, এটি পরিচালনা করবে এবং তারপরে ফলাফলটি ডেটা এসটিডিউটের মাধ্যমে নির্গত করবে।
function X {
while read data; do
...process...
done
}
আপনার while ..read..
উপাদানগুলি কীভাবে কনফিগার করবেন সেগুলি যত্ন সহকারে ব্যয় করতে হবে যেহেতু তারা নির্ভরযোগ্যভাবে গ্রাহ্য করতে সক্ষম হবেন এমন ডেটার ধরণের উপর নির্ভরশীল। একটি অনুকূল কনফিগারেশন থাকতে পারে যা আপনি সামনে আসতে পারেন।
উদাহরণ
$ logF() { while read data; do echo "[F:$(date +"%D %T")] $data"; done; }
$ logG() { while read data; do echo "G:$data"; done; }
$ logH() { while read data; do echo "H:$data"; done; }
এখানে প্রতিটি ফাংশন নিজেই's
$ echo "hi" | logF
[F:02/07/14 20:01:11] hi
$ echo "hi" | logG
G:hi
$ echo "hi" | logH
H:hi
যখন আমরা তাদের একসাথে ব্যবহার করি তারা এখানে।
$ echo "hi" | logF | logG | logH
H:G:[F:02/07/14 19:58:18] hi
$ echo -e "hi\nbye" | logF | logG | logH
H:G:[F:02/07/14 19:58:22] hi
H:G:[F:02/07/14 19:58:22] bye
তারা ইনপুট বিভিন্ন স্টাইল নিতে পারেন।
#-- ex. #1
$ cat <<<"some string of nonsense" | logF | logG | logH
H:G:[F:02/07/14 20:03:47] some string of nonsense
#-- ex. #2
$ (logF | logG | logH) <<<"Here comes another string."
H:G:[F:02/07/14 20:04:46] Here comes another string.
#-- ex. #3
$ (logF | logG | logH)
Look I can even
H:G:[F:02/07/14 20:05:19] Look I can even
type to it
H:G:[F:02/07/14 20:05:23] type to it
live
H:G:[F:02/07/14 20:05:25] live
via STDIN
H:G:[F:02/07/14 20:05:29] via STDIN
..type Ctrl + D to stop..
#-- ex. #4
$ seq 5 | logF | logG | logH
H:G:[F:02/07/14 20:07:40] 1
H:G:[F:02/07/14 20:07:40] 2
H:G:[F:02/07/14 20:07:40] 3
H:G:[F:02/07/14 20:07:40] 4
H:G:[F:02/07/14 20:07:40] 5
#-- ex. #5
$ (logF | logG | logH) < <(seq 2)
H:G:[F:02/07/14 20:15:17] 1
H:G:[F:02/07/14 20:15:17] 2
h(g(f(...)))
বা ফাংশনগুলির প্রতিটি স্ট্যান্ডার্ড ইনপুট (read x; ...
) থেকে পড়ে এবং স্ট্যান্ডার্ড আউটপুট (echo ...
) এ লেখেন ।