이 스크립트는 무엇을 하고 있나요?

이 스크립트는 무엇을 하고 있나요?
#!/bin/bash

echo 123456789 > out.txt
exec 3<> out.txt
read -n 4 <&3
echo -n 5 >&3
exec 3>&-

면접 필기시험 중 대본 마지막에 나오는 out.txt 내용에 대한 질문을 받았습니다. 사실 이후에 스크립트를 실행했는데 결과가 나왔습니다 123456789. 하지만 스크립트, 특히 exec 문 부분에서 무슨 일이 일어나고 있는지 전혀 모릅니다. 매뉴얼 페이지와 Google 검색 결과를 살펴봤지만 이 부분에 대한 정보를 exec찾을 수 없습니다 . 3<>쉘 스크립팅에 능숙한 사람이라면 여기서 무슨 일이 일어나고 있는지 설명할 수 있습니까?

답변1

echo 123456789 > out.txt123456789파일에 문자열을 씁니다 .out.txt

이 구성은 읽고 쓰기 위해 exec 3<>out.txt파일을 열고 이를 파일 설명자 #3에 추가합니다 .out.txt<>

read -n 4 <&34자를 읽습니다.

echo -n 5 >&35를 씁니다(5를 5로 대체).

exec 3>&-파일 설명자 #3을 닫습니다.

~로 이어지다

cat out.txt
123456789

execint에 관한 부분bash(1)지적했다:

exec [-cl] [-a name] [command [arguments]]지정된 경우 command셸을 대체합니다. [...]지정하지 않으면 command모든 리디렉션이 현재 셸 [...]에 적용됩니다.

관련 정보