EOF

1、在命令行环境下,使用cat <

 在我们使用cat <

例1:

cat <

 如果结束分解符EOF前有制表符或者空格,则EOF不会被当做结束分界符,只会继续被当做stdin来输入。而<<-就是为了解决这一问题:

例2:

cat <<-EOF  
Hello,world!  
      EOF   
 上面的写法,虽然最后的EOF前面有多个制表符和空格,但仍然会被当做结束分界符,表示stdin的结束。

这就是<<和<<-的区别。


2、在shell script中使用cat <<_EOF_ 和 cat <<-_EOF_ ,其区别和上述解释一样。

例3:

#!/bin/bash
# Program to output a system information page
TITLE="System Information Report For $HOSTNAME"
CURRENT_TIME=$(date +"%x %r %Z")
TIME_STAMP="Generated $CURRENT_TIME, by $USER"
report_uptime () {
    cat <<-_HHH_
    

System Uptime

$(uptime)
_HHH_ return } report_disk_space () { cat <<-_EDD_

Disk Space Utilization

$(df -h)
_EDD_ return } #函数中的每行必须对齐,要空只能使用TAB键,否者脚本不能正确运行 report_home_space () { cat <<- _EOF_

Home Space Utilization

$(du -sh /home/*)
_EOF_ return } cat <<_EOF_ $TITLE

$TITLE

$TIME_STAMP

$(report_uptime) $(report_disk_space) $(report_home_space) _EOF_


3、字符并不是只能用EOF也可以其它的,像例3这样。


你可能感兴趣的:(EOF)