[ncftp]如何将值传递给命令bash脚本

时间:2013-02-14 15:26:26

标签: bash ftp

我有一个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

hmmm .... \ r确实会产生问题。

1 个答案:

答案 0 :(得分:0)

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

使用其他文字编辑器或使用 dos2unix 进行修复。理想情况下,您首先使用dos2unix一次,然后更改文本编辑器。

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

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

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