0

我有一个 bash 脚本,我想使用 ncftp 来做一些事情。如果我有这个:

#!/bin/sh
HOST='my_IP_FTP_HOST'
USER='username'
PASSWD='password'
ncftp -u $USER -p $PASSWD $HOST <<END_SCRIPT
pwd 
quit
END_SCRIPT

我收到此错误:

Syntax error in parameters or arguments

我不明白为什么。如果我只给它值而不是它的变量...

如果我启动

$ sh -x script.sh

我得到:

+ HOST=$'xxx.x.xx.xx\r'
+ USER=$'username\r'
+ PASSWD=$'password\r'
+ ncftp -u $'username\r' -p $'password\r' $'xxx.x.xx.xx\r'
NcFTP 3.2.1 (Jul 29, 2007) by Mike Gleason (http://www.NcFTP.com/contact/).
Welcome to FTP server
Syntax error in parameters or arguments

嗯.... \r 肯定会产生问题。

4

1 回答 1

0

您是否在 Microsoft Windows 上编辑此文件?它不起作用,因为原始文件使用 Windows 回车符,这些回车符被传递给变量,然后传递给 ncftp,然后停止。

通过使用另一个文本编辑器或使用dos2unix来修复它。理想情况下,您首先使用 dos2unix 一次,然后更改文本编辑器。

或者(但实际上,真的不推荐)您可以只解析变量并删除额外的\r,如下所示,尤其是在某些输入读数出现问题时,这里似乎并非如此。

HOST=${HOST%\\r}
USER=${USER%\\r}
PASSWD=${PASSWD%\\r}

从 Windows 复制文本或在没有适当软件的情况下进行编辑时要小心。

于 2013-02-15T05:21:37.400 回答