2017-07-11 39 views
-1

嗨,我有一个脚本,我正在执行sudo并转到特定的目录,并在该目录内编辑文件名称根据需要。获得所需的文件名后,我想读的FTP命令后FTP Windows机器,但剧本上的文件says-:FTP不工作UNIX

-bash:第19行:报价:找不到命令

-bash:行20:报价:找不到命令

-bash:第21行:放:找不到命令

-bash:22行:退出:找不到命令

我的FTP工作,如果我正常运行,因此被一些其他的problem.Script是如下─:

#!/usr/bin/ 
path=/global/u70/glob 
echo password | sudo -S -l 
sudo /usr/bin/su - glob << 'EOF' 
#ls -lrt 
cd "$path" 
pwd 
for entry in $(ls -r) 
    do 
    if [ "$entry" = "ADM" ];then 
    cd "$entry" 

FileName=$(ls -t | head -n1) 
echo "$FileName" 

FileNameIniKey=$(ls -t | head -n1 | cut -c 12-20) 
echo "$FileNameIniKey" 

echo "$xmlFileName" >> "$xmlFileNameIniKey.ini" 
chmod 755 "$FileName" 
chmod 755 "$FileNameIniKey.ini" 
ftp -n hostname 
quote USER ftp 
quote PASS 
put "$FileName" 
quit 
rm "$FileNameIniKey.ini" 
fi 
done 
EOF 
+0

你应该非常重视'那个其他人'说什么。更好地设置你的问题! – nitinr708

回答

3

您可以提高您的问题,使他们比较容易回答,并通过包括最小未来的读者更有用,独立的例子。这里有一个例子:

#!/bin/bash 
ftp -n mirrors.rit.edu 
quote user anonymous 
quote pass mypass 
ls 

执行时,你会得到一个手动FTP会话,而不是一个文件清单:

$ ./myscript 
Trying 2620:8d:8000:15:225:90ff:fefd:344c... 
Connected to smoke.rc.rit.edu. 
220 Welcome to mirrors.rit.edu. 
ftp> 

的问题是,你假设的脚本是一系列串的那会自动输入终端。这不是真的。这是一系列连续执行的命令。

没有与quote user anonymous反应,直到ftp已退出,然后它的运行作为一个shell命令,而不是被写入ftp命令。

相反,指定登录在命令行中的凭据,然后包括在此文件的命令:

ftp -n "ftp://anonymous:[email protected]" << end 
ls 
end 

这按预期工作:

$ ./myscript 
Trying 2620:8d:8000:15:225:90ff:fefd:344c... 
Connected to smoke.rc.rit.edu. 
220 Welcome to mirrors.rit.edu. 
331 Please specify the password. 
230 Login successful. 
Remote system type is UNIX. 
Using binary mode to transfer files. 
200 Switching to Binary mode. 
229 Entering Extended Passive Mode (|||19986|). 
150 Here comes the directory listing. 
drwxrwxr-x 12 3002  1000   4096 Jul 11 20:00 CPAN 
drwxrwsr-x 10 0  1001   4096 Jul 11 21:08 CRAN 
drwxr-xr-x 18 1003  1000   4096 Jul 11 18:02 CTAN 
drwxrwxr-x 5 89987 546   4096 Jul 10 10:00 FreeBSD 
-1
ftp -n "ftp://anonymous:[email protected]" << end 

名称或服务不知道

+2

请解释你的答案。 –