[shell] bash shell echo multiline 출력시

multi-line 출력을 할 때 here document를 쓰면 편합니다.

예를 들어,

echo “DEVICE=eth0” > /etc/sysconfig/network-script/ifcfg-eth0

echo “BOOTPROTO=static” >> /etc/sysconfig/network-script/ifcfg-eth0

echo “IPADDR=$eth0” >> /etc/sysconfig/network-script/ifcfg-eth0

echo “NETMASK=255.255.255.0” >> /etc/sysconfig/network-script/ifcfg-eth0

echo “ONBOOT=yes” >> /etc/sysconfig/network-script/ifcfg-eth0

이 부분을

cat <<eth0-config > /etc/sysconfig/network-script/ifcfg-eth0

DEVICE=eth0

BOOTPROTO=static

IPADDR=$eth0

NETMASK=255.255.255.0

ONBOOT=yes

eth0-config

이런 식으로 바꾸는 것이죠.

readability를 고려한다면

cat <<-eth0-config > /etc/sysconfig/network-script/ifcfg-eth0

        DEVICE=eth0

        BOOTPROTO=static

        IPADDR=$eth0

        NETMASK=255.255.255.0

        ONBOOT=yes

eth0-config

이렇게 합니다. “-” 심볼은 leading tab을 제거하라는 의미입니다(space는 제거 안함)

만약 parameter substitution ($ 변수를 치환하는 것)를 피하려면

cat <<‘eth0-config’



eth0-config

이렇게 합니다.

이 밖에도 재미있는 사용법이 http://www.linuxdoc.org/LDP/abs/html/here-docs.html 에

많이 있습니다. 참고하세요.

서진우

슈퍼컴퓨팅 전문 기업 클루닉스/ 상무(기술이사)/ 정보시스템감리사/ 시스존 블로그 운영자

You may also like...

페이스북/트위트/구글 계정으로 댓글 가능합니다.