![코드는 zsh가 아닌 bash에서 작동합니다. 임의의 fd에서 집계됩니다.](https://linux55.com/image/195442/%EC%BD%94%EB%93%9C%EB%8A%94%20zsh%EA%B0%80%20%EC%95%84%EB%8B%8C%20bash%EC%97%90%EC%84%9C%20%EC%9E%91%EB%8F%99%ED%95%A9%EB%8B%88%EB%8B%A4.%20%EC%9E%84%EC%9D%98%EC%9D%98%20fd%EC%97%90%EC%84%9C%20%EC%A7%91%EA%B3%84%EB%90%A9%EB%8B%88%EB%8B%A4..png)
저는 쉘 스크립팅을 처음 접하는데 왜 다음 코드 조각이 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에서도 작동합니다.