Skip to content

15. exec 사용하기


exec <filename 또는 exec 0<filename 명령어는 표준입력을 파일로 재지향해 준다. 이때부터는, 주로 키보드에서 받던 모든 표준입력이 그 파일에서 들어 오게 된다. 이렇게 하면 파일을 줄 단위로 읽을 수가 있게 되고, sedawk를 이용해서 입력되는 각 줄을 파싱할 수 있게 된다.


예제) exec으로 표준입력을 재지향하기
#!/bin/bash

# "data-file"의 내용
# Hello
# Bye

# 표준입력을 6번 파일 디스크립터로 재지향
# 키보드에서 들어온 내용은 6번으로 감
exec 6<&0

# "data-file"을 표준입력으로 재지향
# "data-file"의 내용은 표준입력으로 감
exec <data-file

# 이제 키보드에서 값을 받는 것이 아니라
# "data-file"의 내용 한 줄씩 받게 됨
read a1
read a2

echo "다음은 파일에서 읽어 들인 것입니다."
echo "$a1"
echo "$a2"
# 다음은 파일에서 읽어 들인 것입니다.
# Hello
# Bye

# 키보드 입력을 받는 6번 파일 디스크립터를
# 표준입력으로 다시 재지향한 후 닫음
exec 0<&6 6<&-

echo "키보드로 입력하세요."
read b1
echo "다음은 키보드에서 읽어 들인 것입니다."
echo "$b1"
# 키보드로 입력하세요.
# Hello and Bye (입력)
# 다음은 키보드에서 읽어 들인 것입니다.
# Hello and Bye

exit 0

References