ماذا يفعل برنامج gnuwin32 :[.إكس تفعل؟
سؤال
بالبحث في دليل 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
).