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 を 1 回使用してから、テキスト エディターを変更します。

別の方法として (ただし、実際には推奨されません) 、以下のように、変数を解析して余分な\rを削除することもできます

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

Windows からテキストをコピーする場合、または適切なソフトウェアを使用せずに編集する場合は注意してください。

于 2013-02-15T05:21:37.400 に答える