test=$line i=0
while case "$test" in (*select*)
test=${test#*select};;(*) ! :;;
esac; do i=$(($i+1)); done
আপনার grep
এত সহজ জিনিসটির জন্য কল করার দরকার নেই ।
বা একটি ফাংশন হিসাবে:
occur() while case "$1" in (*"$2"*) set -- \
"${1#*"$2"}" "$2" "${3:-0}" "$((${4:-0}+1))";;
(*) return "$((${4:-0}<${3:-1}))";;esac
do : "${_occur:+$((_occur=$4))}";done
এটি 2 বা 3 টি অর্গ নেয়। এর চেয়ে বেশি সরবরাহ করা তার ফলাফলগুলিকে আঁকিয়ে ফেলবে। আপনি এটি ব্যবহার করতে পারেন:
_occur=0; occur ... . 2 && echo "count: $_occur"
... যার সংঘটন গণনা ছাপে .
মধ্যে ...
যদি এটি ঘটে কমপক্ষে 2 বার। এটার মত:
count: 3
যদি $_occur
পারেন খালি থাকে বা unset
যখন এটা প্রার্থনা করা হয়েছে তারপর এটা কোন শেল ভেরিয়েবল এ সব প্রভাবিত হবে return
1 যদি "$2"
ঘটে "$1"
কম "$3"
বার। অথবা, যদি কেবল দুটি টি আর্গ দিয়ে ডাকা হয় তবে এটি return
1 "$2"
না থাকলে কেবল 1 হবে "$1"
। অন্যথায় এটি 0 ফেরত দেয়।
এবং তাই, এর সহজতম ফর্মটিতে, আপনি এটি করতে পারেন:
occur '' . && echo yay || echo shite
... যা ছাপায় ...
shite
... কিন্তু ...
occur . . && echo yay || echo shite
... মুদ্রণ করবে ...
yay
আপনি এটিকে কিছুটা আলাদাভাবে লিখতেও $2
পারেন (*"$2"*)
এবং "${1#*"$2"}"
স্টেটমেন্ট এবং স্টেটমেন্ট উভয় ক্ষেত্রেই উদ্ধৃতিগুলি বাদ দিতে পারেন । যদি আপনি এটি করেন তবে আপনি sh[io]te
ম্যাচ টেস্টের মতো ম্যাচের জন্য শেল গ্লোবগুলি ব্যবহার করতে পারেন ।
...<<<"$line"
। কমান্ডটিgrep
তার পরিবর্তে কোনও ফাইলের প্রত্যাশা করছে