1.
here document
here document는 특정 command의 표준 입력으로 redirect 되어지는 text block을 의미 하며, 주로 쉘 스크립트에서
사용한다.
here document의 문법
command << string
command의 표준 입력으로 사용될 내용
string
이런식으로 사용하며, 이는 커맨드라인 상에서 command < somefile 을 입력하는 것과 동일하다.
(somefile에 command의 표준 입력으로 사용될 내용이 작성되어 있었다고 가정)
hello document의 command 자리에는 표준 입력을 받을 커맨드의 이름을 적고, string 자리에는 자신이 사용할 이
름을 변수 적듯 적으면 된다. (bash 예약어는 제외)
ex) script1
#!/bin/bash
cat << myTest
user name : huammmm1
hello world
myTest
쉘 스크립트 실행 결과는 아래와 같다.
2.
또한 hello document 안에는 parameter expansion, command substitution, arithmetic expansion 기능을 사용하는
것이 가능하다.
ex) script2
#!/bin/bash
USER="huammmm1"
cat << myTest
(parameter expansion) user name : $USER
(command substitution) pwd's output : $(pwd)
(arithmetic expansion) 1+2 result : $((1+2))
myTest
쉘 스크립트 실행 결과는 아래와 같다.
이 기능을 사용하지 않으려면 cat << myTest 부분을 cat << "myTest" 로 바꿔주면 된다. 결과는 아래와 같다.
3.
here document 작성 시 readability를 위해서 들여쓰기를 하는 것도 가능한데, "<<" 부분을 "<<-" 으로 바꾸어 주면
된다. 먼저 아래의 쉘 스크립트를 보자.
ex) script3
이 경우 쉘 스크립트를 실행하면 아래와 같이 탭이 그대로 출력 된다.
하지만 아래 그림과 같이 "<<" 부분을 "<<-"으로 바꿔주게 되면
#!/bin/bash
cat <<- myTest
user name : huammmm1
hello world
myTest
이 경우 bash는 here document 안의 탭을 무시하며, 이 때 탭은 오로지 쉘 스크립트 상의 readability를 위해서 사
용된다. 결과는 아래와 같다.
4.
here strings
here document가 다수의 텍스트를 특정 command의 표준 입력으로 넣을 때 사용된다면 here strings의 경우 짧은
길이의 스트링을 특정 command의 표준 입력으로 넣을 때 사용되며, 문법은 다음과 같다.
command <<< text
ex)
cat <<< "hello world"
text에 space가 포함되어 있을 경우 double quote로 감싸주자.
'Linux > 공개글' 카테고리의 다른 글
make와 shell에서의 $(dollar sign) 해석의 차이 (0) | 2018.06.30 |
---|---|
표준입출력과 리다이렉션, 파이프에 대해서 (1) | 2015.08.09 |
E: unable to locate package libncurses5-dev (3) | 2015.06.20 |
No rule to make target `net/ipv4/netfilter/ipt_ecn.c', needed by `net/ipv4/netfilter/ipt_ecn.o'. Stop. (2) | 2015.06.07 |
Smashing The Stack For Fun And Profit을 읽으려는 분들에게 (0) | 2015.03.02 |