উত্তর:
বাশ [[
শর্তসাপেক্ষ কনস্ট্রাক্ট ব্যবহার করুন এবং $(
<কম্যান্ড> )
কমান্ড প্রতিস্থাপন কনভেনশন পছন্দ করুন। অতিরিক্তভাবে, [[
ভেরিয়েবল মানগুলির শব্দের বিভাজন রোধ করে তাই কমান্ড সাবস্টিটিউশন বিট উদ্ধৃত করার দরকার নেই ..
if [[ $(netstat -lnp | grep ':8080') = *java* ]]; then
echo "Found a Tomcat!"
fi
অন্য বিকল্পটি কেবল grep
নিজের প্রস্থান স্থিতি পরীক্ষা করা যা [
কমান্ডটি ব্যবহার না করে মিথ্যা (1) মিলবে না এবং সত্য (0) থাকলে সেখানে উপস্থিত হবে ।
if netstat -lntp | grep ':8080.*java' > /dev/null; then
echo "Found a Tomcat!"
fi
/ Dev / null এ পুনঃনির্দেশ হ'ল এটি স্ক্রিনে পাওয়া লাইনটি মুদ্রণ করা থেকে বিরত করা।
আপনি আরও কিছু সুনির্দিষ্ট করতে পারেন, তবুও সহজ, জাং এর সাথে মিলে।
if netstat -lnp | awk '$4 ~ /:8080$/ && $7 ~ /java/ {exit(0)} END {exit(1)}'; then …
আপনার কমান্ডের কাঠামোটিকে আরও ঘনিষ্ঠভাবে মেলানোর জন্য, শেলের মধ্যে একটি স্ট্রিংয়ের সাথে ওয়াইল্ডকার্ড মেলানোর পোর্টেবল উপায়টি case
কনস্ট্রাক্টের সাথে।
case "$(netstat -lnp | grep ':8080')" in
*java*) echo "Found a Tomcat!";;
esac
আর একটি বাস্তব-বিশ্বের উদাহরণ :)
if [[ $(HEAD mycompany-intranet.com | grep '200\ OK' | wc -l) = "1" ]]; then
echo doing some intranet settings (proxy, etc)
else
echo doing some work-at-home settings (proxy, etc)
fi
HEAD
? এটি কি আপনার সিস্টেমে কোনও কাস্টম ফাংশন বা ওরফে?
usr/bin/HEAD → lwp-request
। এবং lwp- অনুরোধটি এই এক হিসাবে উপস্থিত হবে । নিশ্চিত না, আমি কীভাবে এটিতে এসেছি (নিশ্চিতভাবে ম্যানুয়ালি নয়), এটি যদি সেখানে ডিফল্টরূপে থাকে। একটি ছোট হাতের অক্ষরও উপস্থিত usr/bin/head
রয়েছে ।
-q
/ Dev / নালটিতে পুনর্নির্দেশের পরিবর্তে গ্রেপ করার বিকল্পটি নোট করুন । এর সাথে-q
, গ্রেপ কোনও কিছুই আউটপুট দেয় না এবং প্রথম ম্যাচের পরে অনুসন্ধান বন্ধ করে দেয়।