web-dev-qa-db-fra.com

Y a-t-il une différence entre l'utilisation de plusieurs déclarations si, sinon les déclarations?

Cette question concerne spécifiquement les scripts shell, mais pourraient être sur tout langage de programmation.

Y a-t-il une différence entre l'utilisation de plusieurs instructions if et à l'aide de Elif déclarations dans les scripts shell? Et une déclaration case ne fonctionnerait pas dans ma situation.

32
Mark Szymanski

Oui potentiellement. Considérez ceci (C #, Java, peu importe):

int x = GetValueFromSomewhere();

if (x == 0)
{
    // Something
    x = 1;
}
else if (x == 1)
{
    // Something else...
}

vs ceci:

int x = GetValueFromSomewhere();

if (x == 0)
{
    // Something
    x = 1;
}
if (x == 1)
{
    // Something else...
}

Dans le premier cas, seulement n de "quelque chose" ou "quelque chose d'autre ..." se produira. Dans le second cas, les effets secondaires du premier bloc rendent la condition dans le deuxième bloc vrai.

Ensuite, pour un autre exemple, les conditions peuvent ne pas être mutuellement exclusives pour commencer par:

int x = ...;

if (x < 10)
{
    ...
} 
else if (x < 100)
{
    ...
}
else if (x < 1000)
{
    ...
}

Si vous vous débarrassez de "autre" ici, alors dès qu'une condition est appariée, le reste aussi.

53
Jon Skeet

Cela concerne l'efficacité et vos besoins. Si des déclarations sont exécutées indépendantes les unes des autres. Chacun fonctionnera. Sinon si les instructions n'exécutent que si la précédente si elle échoue.

10
P.Brian.Mackey