bash - 환경 변수를 사용하여 exec를 파일 설명자로 사용

bash - 환경 변수를 사용하여 exec를 파일 설명자로 사용
LOCK_FD=200
LOCK_FILE=/tmp/lock-file
exec ${LOCK_FD}>${LOCK_FILE}

오류가 발생했습니다.

exec: 200 not found

그러나 이것은 작동합니다

LOCK_FD=200
LOCK_FILE=/tmp/lock-file
eval "exec ${LOCK_FD}>${LOCK_FILE}"

이유를 아시나요?

답변1

변수가 확장되기 전에 리디렉션이 수행되기 때문인 것 같습니다. man bash어느 것이 먼저 완료되었는지 확실하지 않습니다.

리디렉션 명령이 실행되기 전에 해당 입력과 출력이 리디렉션될 수 있습니다. . .

EXPANSION 확장은 명령줄이 단어로 분할된 후에 수행됩니다.

리디렉션을 완료하고 제거한 후 존재하지 않는 작업을 exec실행하려고 하므로 오류 메시지가 나타납니다.200

관련 정보