Chinaunix

标题: 方法中怎么用cat <<EOF 呢? [打印本页]

作者: sunkez    时间: 2008-05-28 09:28
标题: 方法中怎么用cat <<EOF 呢?
脚本内容如下

#!/bin/sh

SendMail ()
{      
        cat <<EOF |/usr/local/qmail/bin/sendmail -t
           SUBJECT:sdssssssss
           to:aa@tom.com
           EOF
}

上边的脚本执行报错????
作者: waker    时间: 2008-05-28 09:33
Here Documents
       This type of redirection instructs the shell to read  input  from  the
       current  source until  a  line containing only word (with no trailing
       blanks) is seen
.  All of the lines read up to that point are then used
       as the standard input for a command.

       The format of here-documents is:

              <<[-]word
                      here-document
              delimiter
作者: sunkez    时间: 2008-05-28 09:46
标题: 回复 #2 waker 的帖子
cat <<EOF |/usr/local/qmail/bin/sendmail -t
           SUBJECT:sdssssssss
           to:aa@tom.com
           EOF

以上部分单独拿出来运行没有问题
只是,加在方法中,就出错,还是方法中不能用cat <<的形式

提示的错误 :syntax error: unexpected end of file
作者: davistar    时间: 2008-05-28 09:49
把EOF顶头写
作者: blackold    时间: 2008-05-28 09:51
标题: 回复 #3 sunkez 的帖子
参考waker的提示,你用<<-EOF试试看。
作者: sunkez    时间: 2008-05-28 09:52
标题: 回复 #4 davistar 的帖子
顶头写了,还是不行......在线等了:)
作者: sunkez    时间: 2008-05-28 09:54
标题: 回复 #5 blackold 的帖子
参考waker的提示,你用<<-EOF试试看。

上面方法试了不行
作者: sunkez    时间: 2008-05-28 10:01
标题: 回复 #4 davistar 的帖子
blackold  兄 ,刚才着急,试你的方法的时候注释掉东西,

你说的EOF顶头写是对了,当EOF有空格,就当成一个空格+EOF了,呵呵

谢谢各位的帮忙
作者: blackold    时间: 2008-05-28 10:03
在我的环境下测试

  1.         cat <<EOF
  2.            SUBJECT:sdssssssss
  3.            to:aa@tom.com
  4. EOF
复制代码

没有问题(没有产生syntax error: unexpected end of file错误)。没有放入函数测试过。
作者: blackold    时间: 2008-05-28 10:07
man了bash, 仅当delimiter前导字符为tab或没有前导字符时,<<-才有效。
作者: walkerxk    时间: 2008-05-28 10:08
EOF这一行不能包含其他任何字符(回车除外)
作者: blackold    时间: 2008-05-28 10:20
标题: 回复 #8 sunkez 的帖子
LZ,无功不受禄,你搞错了吧。是davistar说的,不是我说的。
作者: chliang315    时间: 2008-05-28 11:57
结束的EOF好顶头




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2