代码在 bash 中工作,而不是在 zsh 中工作——在任意 fd 上聚集

代码在 bash 中工作,而不是在 zsh 中工作——在任意 fd 上聚集

我是 shell 脚本新手,这让我想知道为什么以下代码片段在 zsh 中不起作用,但在 bash 中却起作用?是否有相同片段的 zsh 等效项?我收到错误parse error near `200'

( 
  flock -e 200
  echo "In critical section"
  sleep 5 
) 200>/tmp/blah.lockfile 
echo "After critical section"

上面的代码片段来自src:https://stackoverflow.com/a/13551882/15087532

答案1

不要对 fd 进行硬编码。让 shell 为您获取它:

(
  typeset fd=
  exec {fd}> /tmp/blah.lockfile
  flock -e $fd
  echo "In critical section"
  sleep 5 
)
echo "After critical section"

这在 Bash 中也适用。

相关内容