سؤال

بالبحث في دليل gnuwin32/bin، يوجد ملف برنامج غريب المظهر اسمه [.exe

لم أتمكن من العثور عليه في الوثائق، gnuwin32.sourceforge.net أو في بحث Google، لذلك قمت بتشغيله وحصلت على:

$ [
[: missing `]'
$

لذلك أعطيتها ] كمعلمة وحصلت عليها

$ [ ]

$

لم يشتكي، لذلك افترضت أنه كان على المسار الصحيح.حاولت:

$ [ hello ]

مرة أخرى، أية شكاوى.لذلك حاولت التعبير الحسابي:

$ [ 1 + 1 ]
[: +: binary operator expected
$

لقد جربت مجموعة من المجموعات المختلفة، بما في ذلك تدوين البادئة واللاحقة، ولكن يبدو أن لا شيء يعمل.ماذا يفعل هذا الشيء؟

هل كانت مفيدة؟

المحلول

يتم استخدامه للتقييم الشرط التعبيرات.
إنه يعادل (ربما رابطًا رمزيًا لـ؟) ملف test تنفيذ.
الصفحة الرئيسية هي هنا.

قد ترى هذا في الكثير من نصوص bash:

if [ "$LOGNAME" = "scott" ]
then
    echo "Logged in as Scott"
else
     echo "incorrect user"
fi

الشيء المضحك هو أن [ ليس جزءًا من لغة bash، فهو في الواقع ملف قابل للتنفيذ يتم استخدام رمز الإرجاع الخاص به بواسطة "IF".هذا هو سبب المساحة بعد [ والوسيطة الأولى الخاصة بها إلزامية - إذا تم حذفها، فسيحاول البرنامج النصي تنفيذها ["$LOGNAME" وتفشل.

لا يمكنك إجراء العمليات الحسابية باستخدامه - استخدم expr لذلك (انظر هنا).ومع ذلك، يمكنك اختبار مجموعة واسعة من خصائص الملف (هل هي موجودة؟ما هو نوعه؟إلخ) بالإضافة إلى استخدام عوامل المقارنة على السلاسل والأرقام.

نصائح أخرى

test a

==

[ a ]

إنه مجرد سكر

يحرر:للتوضيح، هذا هو بناء الجملة الشرطي، على سبيل المثال.[ "أ" = "أ" ]

إجابة أخرى سبق ذكرها هي نفسها test.على bash، فهو أيضًا مدمج، لذا يمكنك الحصول على المساعدة بشأنه باستخدام ملف help مدمج (help test).

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top