コードはzshではなくbashで動作します。任意のfdで集計されます。

コードはzshではなくbashで動作します。任意のfdで集計されます。

私はシェルスクリプトに初めて触れましたが、なぜ次のコードスニペットが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をハードコードしないでください。シェルに理解して処理させる:

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

これはBashでも動作します。

おすすめ記事