코드는 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에서도 작동합니다.

관련 정보