posted by 귀염둥이채원 2021. 4. 8. 20:42

리눅스에서 cat <<EOF에 대해 정리한다.
* Bash 쉘에서 HEREDOC 구문의 전형적인 형식
* 쉘스크립트에서 명령어를 help
* 직접 입력한 텍스트를 파일로 저장시 사용
* 주로 시작 및 종료를 알리는 키워드로 EOF(End of File) 사용하지만 다른것을 사용해도 된다.

# cat을 이용해 여러 줄을 입력하는 방법

$ sql=$(cat <<EOF
SELECT foo, bar FROM db
WHERE foo='baz'
EOF
)

$ echo $sql
SELECT foo, bar FROM db WHERE foo='baz'


# cat을 이용해 여러 줄을 파일(print.sh)로 저장

$ cat <<EOF > print.sh
#!/bin/bash
echo \$PWD
echo $PWD
EOF

$ cat print.sh
#!/bin/bash
echo $PWD
echo /root


# 쉘스크립트에서 print_usage에 사용하기

$ cat test.sh
function print_usage {
cat << EOF
>> Usage: ${0} <name> <date>
Required Arguments:
- name: set name
- date: set date
EOF
}

if [ $# -lt 2 ]; then
print_usage
exit 1
fi

$ ./test.sh kim
>> Usage: ./test.sh <name> <date>
Required Arguments:
- name: set name
- date: set date



# 참고사이트
https://zetawiki.com/wiki/%EB%A6%AC%EB%88%85%EC%8A%A4_cat_%E2%89%AAEOF
https://twpower.github.io/142-use-cat-for-multiline-stdin
https://stackoverflow.com/questions/2500436/how-does-cat-eof-work-in-bash