Question

Je le suivant dans un fichier qui provient à la fois par .bashrc et .zshrc. La syntaxe est de la de .

if $SHELL=/bin/zsh                                                               
         then
     # to not java .class when running java 
             myclasslist () { reply=(${$(ls *.class)%.class}) }
             compctl -K myclasslist java
fi

Les deux zsh et Bash aller en colère de celui-ci.

Comment pouvez-vous faire si -clause en sh?

Était-ce utile?

La solution

Vous devez envelopper votre condition dans l'opérateur de test (ainsi que des citations à prendre l'habitude):

shell:

#!/bin/sh
if [ "$SHELL" = "/bin/zsh" ]; then
       # do your thing
fi

bash:

#!/bin/bash
if [ "$SHELL" == "/bin/zsh" ]; then
    # just do it!
fi

Autres conseils

Vous avez besoin de la commande alias test de [:

if [ "$SHELL" = "/bin/zsh" ]
then
    myclasslist () { reply=(${$(ls *.class)%.class}) }
    compctl -K myclasslist java
fi

Sur le site Web que vous mentionnez, ils ne pas utiliser l'opérateur de test ([]) parce qu'ils disent:

  

Par exemple, le chat retourne 0 si elle fonctionne   avec succès, et 1 si elle rencontre   une erreur

Le cas doit être suivie d'une « déclaration booléenne » et si cette déclaration renvoie 0, le « puis » est en fait exécuté ...

Dans votre cas, la réponse de Seth est ce que vous cherchez.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top