bash معنى كيف يمكنني اختبار(في سطر واحد) إذا كان إخراج الأمر يحتوي على سلسلة معينة؟



git bash (3)

اختبر قيمة الإرجاع من grep:

sudo service xyz status | grep 'not' &> /dev/null
if [ $? == 0 ]; then
   echo "whateveryouwant"
fi

أوصي كرون ، أنه يعمل بشكل جيد مع كومة SALT

في سطر واحد من bash ، كيف يمكنني إرجاع حالة الخروج من 0 عندما لا يحتوي إخراج /usr/local/bin/monit --version على 5.5 بالضبط وحالة خروج 1 عندما يحدث؟


! /usr/local/bin/monit --version | grep -q 5.5

(تقوم grep بإرجاع حالة الخروج من 0 إذا وجدت تطابقًا ، و 1. بخلاف ذلك. فإن خيار -q ، "هادئ" ، يخبرها بعدم طباعة أي تطابق تجده ؛ وبعبارة أخرى ، فإنه يخبر grep أن الشيء الوحيد الذي تريد هو قيمة إرجاعها. في البداية يبدل حالة الخروج لخط الأنابيب بأكمله.)

تم التعديل للإضافة: بدلاً من ذلك ، إذا كنت تريد إجراء ذلك في "bash pure" (بدلاً من استدعاء grep ) ، فيمكنك كتابة:

[[ $(/usr/local/bin/monit --version) != *5.5* ]]

( [[...]] موضحة في § 3.2.4.2 "Conditional Constructs" من دليل Bash المرجعي . *5.5* هو الحال في fileglobs: صفر أو أكثر من الأحرف ، زائد 5.5 ، بالإضافة إلى صفر أو أكثر من الأحرف.)


[ $(/usr/local/bin/monit --version) == "5.5" ] 

eg-1: تحقق من النجاح

[ $(/usr/local/bin/monit --version) == "5.5" ] && echo "OK"

eg-2: تحقق من الفشل

    [ $(/usr/local/bin/monit --version) == "5.5" ] || echo "NOT OK"

أو ، فقط تحقق مما إذا كان الإخراج يحتوي على 5.5 :

[[ $(/usr/local/bin/monit --version) =~ "5.5" ]] || echo "NOT OK"




bash