[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 에
많이 있습니다. 참고하세요.