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.

有帮助吗?

解决方案

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.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top