here document 구조를 보다가 문득 정리해보는 bash 인풋 리디렉션
개요
here document 구조를 보다가 문득 정리해보는 bash 인풋 리디렉션
\<, \<\<, \<\<\<
\< : 파일 리디렉션
\<\< : here document. heredoc tag사이의 문자열 리디렉션. 멀티라인 입력에 주로 사용. heredoc tag의 특징은 다음과 같다.
- 대소문자 아무문자 입력 가능. uppercase가 산업표준(?)
- 앞뒤로 다른 문자가 붙으면 heredoc tag 아님
- EOF로 정의했을 때 1EOF, EOF1, " EOF"(with space), "EOF "(with space) 모두 heredoc tag 아님. 즉, 끝나지 않음.
\<\<\< : here string. 문자열을 입력으로 사용하며 파이프와 가장 유사하게 사용 가능
- 예제1 : write.txt파일에서 a 찾기
cat write.txt | grep agrep a <<< cat write.txt
- 예제2 : 계산기 입력 넣기.
bc <<< 4*5echo '4*5' | bc
예제1은 파이프가 예제2는 리다이렉트가 선호되는데 그냥 그게 이해하기가 편해서 그렇게 쓰는 것 같다.
특별히 heredoc
bash에서 그냥 쓰던 heredoc의 동작 구조(?)
cat <<EOF > output.txtline1line3EOF
"\<\<" : 문자열 인풋 파이프 EOF : Here Tag. 이걸 히얼태그라고 부르는구나.
참조
https://stackoverflow.com/a/25443034
https://askubuntu.com/questions/678915/whats-the-difference-between-and-in-bash