এক্সিকিউটড কমান্ডের ফলাফল থেকে যদি একটি বিবৃতি দেওয়া হয় তবে কীভাবে তা করা যায়


54

আমি মৃত্যুদন্ড প্রাপ্ত কম্যান্ডের আউটপুট থেকে আইএফ স্টেটমেন্টটি করার চেষ্টা করছি। এখানে আমি এটি করার চেষ্টা করছি তবে এটি কার্যকর হয় না। কেউ কি এটি করার সঠিক উপায় জানেন?

if [ "`netstat -lnp | grep ':8080'`" == *java* ]; then
  echo "Found a Tomcat!"
fi

উত্তর:


65

বাশ [[শর্তসাপেক্ষ কনস্ট্রাক্ট ব্যবহার করুন এবং $(<কম্যান্ড> )কমান্ড প্রতিস্থাপন কনভেনশন পছন্দ করুন। অতিরিক্তভাবে, [[ভেরিয়েবল মানগুলির শব্দের বিভাজন রোধ করে তাই কমান্ড সাবস্টিটিউশন বিট উদ্ধৃত করার দরকার নেই ..

if [[ $(netstat -lnp | grep ':8080') = *java* ]]; then
  echo "Found a Tomcat!"
fi

30

অন্য বিকল্পটি কেবল grepনিজের প্রস্থান স্থিতি পরীক্ষা করা যা [কমান্ডটি ব্যবহার না করে মিথ্যা (1) মিলবে না এবং সত্য (0) থাকলে সেখানে উপস্থিত হবে ।

if netstat -lntp | grep ':8080.*java' > /dev/null; then
    echo "Found a Tomcat!"
fi

/ Dev / null এ পুনঃনির্দেশ হ'ল এটি স্ক্রিনে পাওয়া লাইনটি মুদ্রণ করা থেকে বিরত করা।


12
-q/ Dev / নালটিতে পুনর্নির্দেশের পরিবর্তে গ্রেপ করার বিকল্পটি নোট করুন । এর সাথে -q, গ্রেপ কোনও কিছুই আউটপুট দেয় না এবং প্রথম ম্যাচের পরে অনুসন্ধান বন্ধ করে দেয়।
স্টাফেন চেজেলাস

5

আরও সহজ,

netstat -lntp | grep ':8080.*java' > /dev/null && command

আপনি যদি কেবল একটি কাজ করতে চান


4

আপনি আরও কিছু সুনির্দিষ্ট করতে পারেন, তবুও সহজ, জাং এর সাথে মিলে।

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

0

আর একটি বাস্তব-বিশ্বের উদাহরণ :)

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? এটি কি আপনার সিস্টেমে কোনও কাস্টম ফাংশন বা ওরফে?
ভাগ্যমান 212

usr/bin/HEAD → lwp-request। এবং lwp- অনুরোধটি এই এক হিসাবে উপস্থিত হবে । নিশ্চিত না, আমি কীভাবে এটিতে এসেছি (নিশ্চিতভাবে ম্যানুয়ালি নয়), এটি যদি সেখানে ডিফল্টরূপে থাকে। একটি ছোট হাতের অক্ষরও উপস্থিত usr/bin/head রয়েছে
ফ্রাঙ্ক নোক
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.