()
和{}
都是对一串的命令进行执行,但有所区别:
相同点:
()
和{}
都是把一串的命令放在括号里面,并且命令之间用;
号隔开
不同点:
()
只是对一串命令重新开一个子shell进行执行,{}
对一串命令在当前shell执行()
最后一个命令可以不用分号,{}
最后一个命令要用分号()
里的第一个命令和左边括号不必有空格,{}
的第一个命令和左括号之间必须要有一个空格()
和{}
中括号里面的某个命令的重定向只影响该命令。但括号外的重定向则影响到括号里的所有命令
# var=test
# echo $var
test
# (var=notest;echo $var)
notest
# echo $var
test
# { var=notest;echo $var;}
notest
# echo $var
notest