Pour faire si la clause de Sh
-
13-09-2019 - |
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?
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.