bash脚本Heredoc + FTP错误

时间:2013-08-06 16:12:54

标签: linux macos bash shell heredoc

我尝试这样做

 #!/bin/bash

 ftp "$HOST"$3"/"$2"/" <<EOD
        #toggle Interactive mode
        prompt off
        lcd $5"/"$4
        mget "$4"*
        exit
 EOD

我收到以下错误

  

语法错误:意外的文件结尾

当我将其更改为或任何其他可能性时

ftp "$HOST"$3"/"$2"/" <<<EOD
            #toggle Interactive mode
            prompt off
            lcd $5"/"$4
            mget "$4"*
            exit
     EOD

我得到了

./download.sh: line 31: 87621 Segmentation fault: 11  ftp "$HOST"$3"/"$2"/" <<< EOD
./download.sh: line 20: prompt: command not found
./download.sh: line 21: lcd: command not found
./download.sh: line 22: mget: command not found

我不知道如何解决这个问题。我该怎么做O_O

2 个答案:

答案 0 :(得分:2)

在我的Mac上,分段错误是由脚本中的注释产生的。使用尾随#删除行将使其正常工作。

答案 1 :(得分:0)

许多交互式命令并不能很好地处理管道输入。也许试试http://www.columbia.edu/kermit/ftpscripts.html

说,许多其他人似乎已经成功地做了你正在做的事情(例如http://www.unix.com/unix-advanced-expert-users/4189-automated-ftp.html),所以也许你只是有一个引用问题?尝试将命令(ftp "$HOST"$3"/"$2"/")更改为cat以查看shell是否正确传递到此处 - doc到它?

如果您最终需要提供密码,这也可以提供见解:http://www.stratigery.com/scripting.ftp.html