Para fazer uma cláusula IF em Sh
-
13-09-2019 - |
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?
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