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

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

مثال أساسي

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

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

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

في جوهرها ، يقارن الأمر بين 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)

مقارنة النص

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

أمثلة:

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" له طول سلسلة أكبر من الصفر)

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

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

أمثلة:

test / path / to / file1 -n / 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 غير موجود"

ملخص

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