我在Bash中做了很多脚本,而不是使用典型的语法:
if [[ condition ]]
then
foo
bar
else
baz
quux
fi
我经常使用它的简化版本:
[[ condition ]] && ( foo; bar ) || ( baz; quux )
但是,看一下我工作的新公司的一些脚本,我注意到它代替了常规括号,使用大括号可以正常工作。例如:
$ false && ( echo -n "Hello "; echo "World"; ) || ( echo -n "Goodbye "; echo "World"; )
Goodbye World
$ true && ( echo -n "Hello "; echo "World"; ) || ( echo -n "Goodbye "; echo "World"; )
Hello World
$ false && { echo -n "Hello "; echo "World"; } || { echo -n "Goodbye "; echo "World"; }
Goodbye World
$ true && { echo -n "Hello "; echo "World"; } || { echo -n "Goodbye "; echo "World"; }
Hello World
所以前两个例子使用括号,这是我通常使用的。最后两个使用大括号。
所以我的问题是......差异是什么?我什么时候应该使用一个而不是另一个?
谢谢!