Skip to main content

كيفية استخدام شروط الاختبار داخل البرنامج النصي باش

كود تجسس خطير على أي هاتف | ستصدمك النتيجة الكود مخفي في هاتفك أنت (أبريل 2025)

كود تجسس خطير على أي هاتف | ستصدمك النتيجة الكود مخفي في هاتفك أنت (أبريل 2025)
Anonim

يمكن استخدام أمر الاختبار على سطر أوامر Linux لمقارنة عنصر واحد مقابل آخر ، إلا أنه يُستخدم بشكل أكثر شيوعًا في برامج نصوص BASH shell كجزء من العبارات الشرطية التي تتحكم في المنطق وتدفق البرنامج.

مثال أساسي

يمكنك تجربة هذه الأوامر ببساطة عن طريق فتح نافذة طرفية.

test 1 -eq 2 && echo "yes" || صدى "لا"

يمكن تقسيم الأمر الموضح أعلاه كما يلي:

  • اختبار - هذا يعني أنك على وشك إجراء مقارنة
  • 1 - العنصر الأول الذي ستقوم بمقارنته
  • -كيف - كيف تقارن. في هذه الحالة ، تقوم باختبار ما إذا كان رقم واحد يساوي آخر.
  • 2 - العنصر الذي تقارن به العنصر الأول ضد
  • && - قم بتشغيل العبارة التالية إذا كانت النتيجة صحيحة
  • صدى "نعم" - الأمر لتشغيل إذا كانت المقارنة ترجع صحيح
  • || - قم بتشغيل العبارة التالية إذا كانت النتيجة خاطئة
  • echo "no" - الأمر الذي سيتم تشغيله إذا كانت المقارنة ترجع خطأ

في جوهرها ، يقارن الأمر بين 1 و 2 ، وفي حالة تطابقها ، يتم تنفيذ العبارة echo "yes" التي تعرض "yes" وإذا لم تتطابق ، يتم تنفيذ العبارة "no" للصدى التي تعرض "no".

مقارنة الارقام

إذا كنت تقارن العناصر التي تحلل الأرقام ، فيمكنك استخدام عوامل المقارنة التالية:

  • -eq - القيمة 1 مساوية القيمة 2
  • -ge - القيمة 1 أكبر أو تساوي القيمة 2
  • -gt - القيمة 1 أكبر من القيمة 2
  • -le - القيمة 1 أقل من أو تساوي القيمة 2
  • -lt - القيمة 1 أقل من القيمة 2
  • - هل القيمة 1 لا تساوي القيمة 2

أمثلة

test 1 -eq 2 && echo "yes" || صدى "لا"

(يعرض "لا" على الشاشة لأن 1 لا يساوي 2)

test 1 -ge 2 && echo "yes" || صدى "لا"

(يعرض "لا" على الشاشة لأن 1 ليس أكبر أو يساوي 2)

اختبار 1 -gt 2 && صدى "نعم" || صدى "لا"

(يعرض "لا" على الشاشة لأن 1 ليس أكبر من 2)

test 1 -le 2 && echo "yes" || صدى "لا"

(يعرض "نعم" على الشاشة لأن 1 أقل من أو يساوي 2)

اختبار 1 -lt 2 && صدى "نعم" || صدى "لا"

(يعرض "نعم" على الشاشة لأن 1 أقل من أو يساوي 2)

test 1 -ne 2 && echo "yes" || صدى "لا"

(يعرض "نعم" على الشاشة لأن 1 لا يساوي 2)

مقارنة النص

إذا كنت تقارن العناصر التي تقوم بتحليلها كسلسلة ، فيمكنك استخدام عوامل المقارنة التالية:

  • = - هل تتطابق السلسلة 1 مع السلسلة 2
  • ! = - السلسلة 1 مختلفة إلى السلسلة 2
  • -n - هو طول السلسلة أكبر من 0
  • -z - هو طول السلسلة 0

أمثلة

test "string1" = "string2" && echo "yes" || صدى "لا"

(يعرض "لا" على الشاشة لأن "string1" لا يساوي "string2")

test "string1"! = "string2" && echo "yes" || صدى "لا"

(يعرض "نعم" على الشاشة لأن "string1" لا يساوي "string2")

test -n "string1" && echo "yes" || صدى "لا"

(يعرض "نعم" على الشاشة لأن "string1" له طول سلسلة أكبر من الصفر)

test -z "string1" && echo "yes" || صدى "لا"

(يعرض "لا" على الشاشة لأن "string1" له طول سلسلة أكبر من الصفر)

مقارنة الملفات

إذا كنت تقارن الملفات ، فيمكنك استخدام عوامل المقارنة التالية:

  • -ef - هل تحتوي الملفات على نفس الجهاز وأرقام inode (هل هي نفس الملف)
  • -nt - هو الملف الأول الأحدث من الملف الثاني
  • --ot - هو أول ملف أقدم من الملف الثاني
  • -b - الملف موجود وحظر خاص
  • -c - الملف موجود وهو حرف خاص
  • -d - الملف موجود وهو دليل
  • -e - الملف موجود
  • -f - الملف موجود وهو ملف عادي
  • -g - الملف موجود ولديه رقم المجموعة المحدد
  • -G - الملف موجود ومالك من قبل مجموعة المستخدم
  • -h - الملف موجود وهو رابط رمزي
  • -k - الملف موجود ولديه مجموعة لزجة
  • -L - نفس -h
  • -O - ​​الملف موجود أنت المالك
  • -p - الملف موجود وهو توجيه إخراج مسمى
  • - r - الملف موجود وقابل للقراءة
  • -s - الملف موجود ولديه حجم أكبر من الصفر
  • -S - الملف موجود وهو مأخذ توصيل
  • -t - يتم فتح واصف الملف على جهاز طرفي
  • -u - الملف موجود ويتم تعيين بت-معرف المستخدم
  • -w - الملف موجود وقابل للكتابة
  • -x - الملف موجود وهو قابل للتنفيذ

أمثلة

test / path / to / file1 -nt / path / to / file2 && echo "yes"

(إذا كان file1 أحدث من file2 فسيتم عرض الكلمة "yes")

test -e / path / to / file1 && echo "yes"

(في حالة وجود file1 سيتم عرض الكلمة "نعم")

test -O / path / to / file1 && echo "yes"

(إذا كنت تملك file1 ، فسيتم عرض كلمة "yes" ")

المصطلح

  • حظر خاص - الملف عبارة عن جهاز كتلة مما يعني أنه تتم قراءة البيانات في كتل من وحدات البايت. هذه هي عادة ملفات الجهاز مثل محركات الأقراص الصلبة.
  • حرف خاص - يتم عمل الملف على الفور عند الكتابة إليه وهو عادة جهاز مثل منفذ تسلسلي

مقارنة شروط متعددة

حتى الآن ، كان كل شيء يقارن بشيء ضد آخر ، ولكن ماذا لو كنت تريد مقارنة شرطين؟

على سبيل المثال ، إذا كان الحيوان لديه 4 أرجل ويذهب "moo" ، فمن المحتمل أنه بقرة. ببساطة التحقق من 4 أرجل لا يضمن أن يكون لديك بقرة ، ولكن التحقق من الصوت الذي يقوم به بالتأكيد.

لاختبار كل الشروط في وقت واحد استخدم العبارة التالية:

test 4 -eq 4 -a "moo" = "moo" && echo "إنها بقرة" || صدى "انها ليست بقرة"

الجزء الرئيسي هنا هو -a الذي يرمز إليه و .

هناك طريقة أفضل وأكثر شيوعًا لإجراء الاختبار نفسه وهي كما يلي:

test 4 -eq 4 && test "moo" = "moo" && echo "it is a cow" || صدى "انها ليست بقرة"

اختبار آخر قد ترغب في إجراءه هو مقارنة عبورتين وإذا كان أي منهما صحيحًا ، فقم بإنتاج سلسلة. على سبيل المثال ، إذا كنت تريد التحقق من وجود ملف يسمى "file1.txt" أو وجود ملف يسمى "file1.doc" ، يمكنك استخدام الأمر التالي:

test -e file1.txt -o -e file1.doc && echo "file1 موجود" || صدى "file1 غير موجود"

الجزء الرئيسي هنا هو -o الذي يرمز إليه أو .

هناك طريقة أفضل وأكثر شيوعًا لإجراء الاختبار نفسه وهي كما يلي:

test -e file1.txt || test -e file1.doc && echo "file1 موجود" || صدى "file1 غير موجود"

القضاء على اختبار الكلمة

لا تحتاج في الواقع إلى استخدام اختبار الكلمة لإجراء المقارنة. كل ما عليك القيام به هو إرفاق العبارة بين قوسين مربعين على النحو التالي:

-e file1.txt && echo "file1 موجود" || صدى "file1 غير موجود"

و و يعني أساسا نفس الاختبار.

الآن أنت تعرف هذا يمكنك تحسين مقارنة شروط متعددة على النحو التالي:

4 -eq 4 && "moo" = "moo" && echo "إنها بقرة" || صدى "انها ليست بقرة"-e file1.txt || -e file1.doc && echo "file1 موجود" || صدى "file1 غير موجود"

ملخص

يعتبر الأمر الاختبار أكثر فائدة في البرامج النصية لأنه يمكنك اختبار قيمة متغير واحد مقابل آخر والتحكم في تدفق البرنامج. في سطر الأوامر القياسي ، يمكنك استخدامه لاختبار ما إذا كان الملف موجودًا أم لا.