سؤال
لدي ما يلي في ملف مصادر من قبل .bashrc و .zshrc. بناء الجملة من موقع.
if $SHELL=/bin/zsh
then
# to not java .class when running java
myclasslist () { reply=(${$(ls *.class)%.class}) }
compctl -K myclasslist java
fi
كل من زاش و باش يذهب منزعجا منه.
كيف يمكنك صنع ما إذا كان - منمق في sh؟
المحلول
تحتاج إلى التفاف حالتك في مشغل الاختبار (بالإضافة إلى اقتباسات للحصول على العادة):
في قذيفة:
#!/bin/sh
if [ "$SHELL" = "/bin/zsh" ]; then
# do your thing
fi
في باش:
#!/bin/bash
if [ "$SHELL" == "/bin/zsh" ]; then
# just do it!
fi
نصائح أخرى
تحتاج إلى test
الاسم المستعار [
أمر:
if [ "$SHELL" = "/bin/zsh" ]
then
myclasslist () { reply=(${$(ls *.class)%.class}) }
compctl -K myclasslist java
fi
على موقع الويب الذي ذكرته، فإنهم لا يستخدمون مشغل الاختبار ([]) لأنهم يقولون:
على سبيل المثال، إرجاع القط 0 إذا تم تشغيله بنجاح، و 1 إذا واجه خطأ
إذا كان يجب اتباع "بيان منطقي" وإذا عاد هذا العبارة 0، فإن "ثم" يتم تنفيذها بالفعل ...
في حالتك، إجابة سيث هي ما تبحث عنه.
لا تنتمي إلى StackOverflow