#!/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.txt
123456789
파일에 문자열을 씁니다 .out.txt
이 구성은 읽고 쓰기 위해 exec 3<>out.txt
파일을 열고 이를 파일 설명자 #3에 추가합니다 .out.txt
<
>
read -n 4 <&3
4자를 읽습니다.
echo -n 5 >&3
5를 씁니다(5를 5로 대체).
exec 3>&-
파일 설명자 #3을 닫습니다.
~로 이어지다
cat out.txt
123456789
exec
int에 관한 부분bash(1)
지적했다:
exec [-cl] [-a name] [command [arguments]]
지정된 경우command
셸을 대체합니다. [...]지정하지 않으면command
모든 리디렉션이 현재 셸 [...]에 적용됩니다.