سؤال

لدي ما يلي في ملف مصادر من قبل .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، فإن "ثم" يتم تنفيذها بالفعل ...

في حالتك، إجابة سيث هي ما تبحث عنه.

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