다음 줄에서 파일을 읽는 셸 스크립트로 작성된 코드 조각을 발견했습니다.파일에서 읽을 때 exec 명령의 중요성
BAKIFS=$IFS
IFS=$(echo -en "\n\b")
exec 3<&0
exec 0<"$FILE"
while read -r line
do
# use $line variable to process line in processLine() function
processLine $line
done
exec 0<&3
# restore $IFS which was used to determine what the field separators are
IFS=$BAKIFS
언급 한 세 가지 명령의 필요성을 이해할 수 없습니다. 누군가 나를 위해 정교하게 만들 수 있습니까? 또한 $ ifs 변수는 파일을 읽을 때마다 다시 설정됩니까?
고맙습니다. pax .... 내가 백그라운드에서 서버에서이 스크립트를 실행한다고 가정 해보십시오. while 루프의 지속 기간 동안 표준 입력은 3으로 설정됩니다. 표준 입력을 사용할 수 없다는 의미입니까? 그 기간 동안 다른 프로그램을 읽는가? 이 의존성을 없애기위한 아이디어가 있습니까? – ayush
해당 파일 핸들은 _process_에 속하며 시스템 전체 리소스가 아닙니다. 예를 들어, 모든 프로세스는 다른 프로세스와 충돌하지 않고 자체 표준 입력 (파일 핸들 0)을 가져옵니다. 그래서, 만약 당신이 그 프로그램과 별개로 실행되는 프로그램에 대해 말한다면, 아니오. 물론 프로세스 내에서 while 루프 내에서 "진짜"표준에서 다른 행을 읽지 못합니다 (예 : 파일에서 다음 행을 얻음). – paxdiablo
다시 한 번 감사드립니다 ... 이제 알았습니다. – ayush