Pergunta

Is there any functional advantage of using a simple if-then statement such as

if [ … ]; then
do

over using short-circuit list evaluators with command groups such as

[ … ] && {
}

Of course, if-then is the standard way of writing it, but is there any actual difference/advantage from a functional point of view?

Using () instead of {} would spawn a new subshell, thus creating a new scope for variables inside the if-then block.

Foi útil?

Solução

Not with your example, but the commonly seen

condition && foo || bar

is not the same as

if condition
then
  foo
else
  bar
fi

In the former case, bar will run not only if condition fails, but if foo fails.

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