【发布时间】:2014-02-11 17:40:27
【问题描述】:
昨天我在got some clarification 周围使用flock 并且一些简单的概念对我来说变得清晰了。
我现在的问题是关于子壳的。看看这个块
(
flock -s 200
# ... commands executed under lock ...
) 200>/var/lock/mylockfile
我的理解是 200>/var/lock/mylockfile 运行 之前 flock -s 200,但是如果我尝试这样的事情
( echo This is a sub-shell ) command
我从 BASH 收到一个错误
-bash: syntax error near unexpected token `command'
引入分号
( echo This is a sub-shell ); command
修复了错误,但导致command 在子shell 返回后运行。
所以我想知道最初的示例如何导致重定向首先运行。这与> 优先于子外壳(list) 表示法有关吗?查看我发现的 BASH 手册页
运算符按优先顺序进行评估。中的子表达式 括号首先被评估并且可以覆盖优先规则 以上。
【问题讨论】:
-
仅供参考,子shell 和列表在语法上是不同的——尽管使用相同的字符(因此在词法分析器中看起来相同),但它们具有不同的解析器规则。
标签: bash io-redirection subshell