bash中的括号 – 子shell与分组
在bash的联机帮助页面中,在“
Compound Commands”部分下面有以下两个条目:
根据
我能看到的唯一区别是,在一个中,括号旁边没有空格,而另一个则是.这实际上区分了分组与子shell,还是依赖于上下文? 换句话说,如果我跑 if ! [ 2 -eq 2 ] || ( [ 2 -eq 2 ] && [ 4 -eq 4 ] ); then echo "hello"; fi 这只是分组条件还是在子shell中运行?
这些条目的上下文是相关的.
后者在[[构造并记录该构造在其参数上的行为的文档]的文档中. 前者正在讨论顶级shell复合命令构造(如[[construct本身])并引入了一个子shell. 这在手册页的后面的test / [命令的描述中再次出现(但基本上与[[讨论]相同). 要在当前shell中进行分组,可以使用花括号: if ! [ 2 -eq 2 ] || { [ 2 -eq 2 ] && [ 4 -eq 4 ]; }; then ... fi (注意括号内侧和额外分号周围的空格,这两者都是必要的.) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |