Qual é a maior diferença neste caso quando se usa case ou if?

2

Eu sempre uso if para esse tipo de coisa, e realmente não pensei nisso, mas vamos dizer algo simples assim:

case $1 in
test)
echo "test"
;;
test2)
echo "test"
;;
test3
echo "test3"
esac

vs.

if [[ "$1" == "test" ]]
then
echo "test"
elif [[ "$1" == "test2" ]]
then
echo "test2"
elif [[ "$1" == "test3" ]]
then
echo "test3"
fi

Quais são as maiores diferenças neste caso? Alguma delas é objetivamente melhor para outra tarefa?

    
por Jonjukijotu 04.02.2016 / 23:42

2 respostas

2

Um case testa vários padrões em relação a uma variável, $1 no seu exemplo.
Vários if ... elif podem fazer qualquer teste, incluindo vários padrões contra uma variável, mas isso é apenas um caso especial do geral if ... elif .

    
por 04.02.2016 / 23:54
1

case compara o valor de uma única shell word com qualquer número de padrões especificados (se houver) e executa o valor associado shell lista (se houver) para o primeiro deles encontrado para corresponder ou nada. case avalia a palavra e cada padrão associado até a primeira correspondência, apenas uma vez. case retorna para qualquer shell lista ou então 0.

if compara o valor do status de retorno de alguns shell lista para 0 e subseqüentemente executa o then shell lista se corresponder ou então executar a lista opcional elif ou else shell (se houver) . if executa e avalia o retorno de pelo menos um shell lista para cada if em qualquer cadeia de if s com uma lista que retorne 0.

if retorna para qualquer lista then ou else executada, ou então 0, independentemente da devolução do if shell lista .

    
por 05.02.2016 / 04:25

Tags