اختبار (يونكس)

test هي أداة سطر أوامر موجودة في أنظمة التشغيل Unix و Plan 9 والأنظمة الشبيهة بـ Unix ، وتُستخدم لتقييم التعبيرات الشرطية . تم تحويل test إلى أمر مدمج في الصدفة عام 1981 مع نظام UNIX System III ، وفي الوقت نفسه تم توفيرها تحت الاسم البديل [ . [ 1 ]

ملخص

testيُقيّم الأمر في أنظمة يونكس المُعامل expression. في معظم تطبيقات الصدفة الحديثة، يُعدّ هذا الأمر جزءًا مُدمجًا من الصدفة ، على الرغم من وجود نسخة خارجية منه. في الصيغة الثانية للأمر، [ ]يجب وضع مسافات بين القوسين (لأنه [برنامج، وتتطلب الصدفات المتوافقة مع معيار POSIX وجود مسافة بين اسم البرنامج ومعاملاته). يجب التحقق صراحةً من أسماء الملفات في صدفة لغة C. يؤدي استبدال أسماء الملفات ( المطابقة العامة ) إلى إنهاء سكربت الصدفة.

testلا ينبغي الخلط بين هذا الأمر والكلمة [[المحجوزة التي تم تقديمها مع ksh88. فالكلمة المحجوزة ليست أمرًا، بل هي جزء من بنية ksh88، ولا تطبق استبدال اسم الملف على تعبيرات glob.

قام كيفن براونزدورف وماثيو برادبورن بكتابة النسخة testالمدمجة في GNU coreutils . [ 2 ] يتوفر الأمر كحزمة منفصلة لنظام التشغيل مايكروسوفت ويندوز كجزء من مجموعة UnxUtils، وهي عبارة عن منافذ Win32 أصلية لأدوات GNU Unix الشائعة. [ 3 ] كما تم نقل أمر الاختبار إلى نظام التشغيل IBM i . [ 4 ]

بناء الجملة

test expressionأو[ expression ]

الحجج

تُستخدم الوسائط التالية لإنشاء هذا المعامل. تُرجع جميع الوسائط قيمةً Trueإذا كان الكائن (ملف أو سلسلة نصية) موجودًا، وكان الشرط المحدد صحيحًا.

دعوىيتم إرجاع Trueما إذا كان الملف
هو ملف خاص بالكتل
هو ملف خاص بالأحرف
هو دليل
-هـموجود
-fهو ملف عادي
-gتم ضبط بت معرف مجموعة المجموعة
-hهو رابط رمزي
تم ضبط الجزء اللاصق
-Lهو رابط رمزي
-pهو أنبوب مُسمى (FIFO)
-rيمكن قراءتها بواسطة العملية الحالية
-sحجمه أكبر من 0
-tتم فتح واصف الملف وهو مرتبط بطرفية
-uتم ضبط بت تعيين معرف المستخدم
-wعلامة الكتابة مفعلة
-xتم تفعيل علامة التنفيذ

بالنسبة -xللوسيط، إذا كان الملف المحدد موجودًا وكان عبارة عن دليل، فإن Trueقيمة الخروج تشير إلى أن العملية الحالية لديها إذن بالتغيير cdإلى الدليل.

وصلات كورن شيل غير قياسية

file1 -nt file2 - file1 أحدث من file2 الملف 1 أقدم من الملف 2 - الملف 1 أقدم من الملف 2 file1 -ef file2 - file1 هو اسم آخر لـ file2 - ( رابط رمزي أو رابط صلب )

وسائط السلسلة

في لغة بيرل ، يتم عكس هذه الأقسام: eqهو عامل سلسلة نصية و ==هو عامل عددي، وهكذا بالنسبة للأجزاء الأخرى.

-n String1 - طول المتغير String1 غير صفري -z String1 - طول المتغير String1 يساوي صفرًا (0) String1 = String2 - المتغيران String1 و String2 متطابقان String1 != String2 - المتغيران String1 و String2 ليسا متطابقين String1 - صحيح إذا لم يكن المتغير String1 سلسلة نصية فارغة

عدد الوسائط

Integer1 -eq Integer2 - المتغيران Integer1 وInteger2 متساويان جبريًا -ne - لا يساوي -gt - أكبر من -ge - أكبر من أو يساوي -lt - أصغر من -le - أصغر من أو يساوي

المشغلون

testيمكن دمج الوسائط مع عوامل التشغيل التالية:

! - عامل النفي الأحادي -a - عامل AND الثنائي -o - عامل OR الثنائي (للعامل -aالأول أسبقية أعلى من -oالعامل الثاني) \(التعبير\) - يجب وضع شرطة مائلة عكسية قبل الأقواس المستخدمة للتجميع\

تُعدّ المعاملات " -aو" -oو"الأقواس" للتجميع امتدادات لـ XSI [ 5 ] ، وبالتالي فهي غير قابلة للنقل. في البرامج النصية القابلة للنقل، يمكن تحقيق التأثير نفسه بربط استدعاءات متعددة لـ "و" testمع المعاملات &&||" والأقواس.

حالة الخروج

يُعيد هذا الأمر قيم الخروج التالية:

0 - قيمة مُعامل التعبير صحيحة. 1 - قيمة مُعامل التعبير خاطئة أو مفقودة. >1 - حدث خطأ.

أمثلة

1. لاختبار ما إذا كان الملف غير موجود أو فارغًا، اكتب:

إذا لم يكن الاختبار يحتوي على " $1 " ، فسيتم عرض رسالة تفيد بأن $1 غير موجود أو فارغ . 

إذا كان الملف المحدد بواسطة المعامل الموضعي الأول لإجراء الصدفة، $1، غير موجود أو كان حجمه صفرًا، فسيعرض أمر الاختبار رسالة. أما إذا كان $1 موجودًا وحجمه أكبر من صفر، فلن يعرض أمر الاختبار أي شيء.

ملاحظة: يجب أن تكون هناك مسافة بين وظيفة -s واسم الملف.

تضمن علامات الاقتباس المحيطة بـ $1 أن يعمل الاختبار بشكل صحيح حتى لو كانت قيمة $1 سلسلة فارغة. إذا تم حذف علامات الاقتباس وكانت $1 سلسلة فارغة، فسيعرض أمر الاختبار رسالة الخطأ التالية:

اختبار: مطلوب وسيط.

2. لإجراء مقارنة معقدة، اكتب:

إذا كان [ " $# " -lt 2 ] || ! [ -e " $1 " ] ثم اخرج من البرنامج.

إذا تم تزويد إجراء الصدفة بأقل من وسيطين موضعيين، أو إذا كان الملف المحدد بواسطة $1 غير موجود، فسيتم إنهاء إجراء الصدفة. يمثل متغير الصدفة الخاص $# عدد الوسائط الموضعية المُدخلة في سطر الأوامر الذي يبدأ إجراء الصدفة هذا.

انظر أيضاً

مراجع

  1. http://www.in-ulm.de/~mascheck/bourne/#system3 مؤرشف بتاريخ 4 مايو 2019 في أرشيف الإنترنت (Wayback Machine) تغييرات Bourne Shell مع System III
  2. "test(1) — coreutils — Debian buster — Debian Manpages" . مؤرشف من الأصل بتاريخ 12 يوليو 2020. تم الاطلاع عليه بتاريخ 12 يوليو 2020 .
  3. "منافذ Win32 أصلية لبعض أدوات GNU" . unxutils.sourceforge.net . مؤرشف من الأصل بتاريخ 2006-02-09 . تم الاطلاع عليه بتاريخ 2025-08-11 .
  4. آي بي إم . "برمجة Qshell لنظام IBM System i الإصدار 7.2" (ملف PDF) . آي بي إم . مؤرشف (ملف PDF) من الأصل بتاريخ 18 سبتمبر 2020. تم الاطلاع عليه بتاريخ 5 سبتمبر 2020 .
  5. "معيار IEEE 1003.1، 2004، وثائق لـ " . مؤرشف من الأصل بتاريخ 2008-07-08 . تم الاسترجاع بتاريخ 2006-11-08 .test

للمزيد من القراءة