Pergunta

Eu tenho o seguinte em um arquivo que é proveniente de .BashRC e .ZSHRC. A sintaxe é do local.

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

Zsh e Bash ficam chateados com isso.

Como você pode fazer um if -clause em sh?

Foi útil?

Solução

Você precisa envolver sua condição no operador de teste (além de cotações para adquirir o hábito):

Em shell:

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

Em Bash:

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

Outras dicas

Você precisa do test Alias [ comando:

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

No site que você menciona, eles não usam o operador de teste ([]) porque dizem:

Por exemplo, o gato retorna 0 se for executado com sucesso e 1 se encontrar um erro

O IF deve ser seguido por uma "declaração booleana" e se esta declaração retornar 0, o "então" será realmente executado ...

No seu caso, a resposta de Seth é o que você está procurando.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top