Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux ftp命令内部循环_Linux_Image_Bash_Loops - Fatal编程技术网

Linux ftp命令内部循环

Linux ftp命令内部循环,linux,image,bash,loops,Linux,Image,Bash,Loops,我想知道在某些情况下是否可以添加0-10个文件,假设我有一个带有video1.jpg的shell脚本,并希望它升级到video10.jpg并重新开始。脚本运行并给出video1.jpg,我希望它不断增加+1到10 #!/bin/bash ftp -n -v $HOST << EOT ascii user $USER $PASSWD prompt get video1.jpg bye EOT #/bin/bash ftp-n-v$HOST你可以试试这个 #!/bin/bash for

我想知道在某些情况下是否可以添加0-10个文件,假设我有一个带有
video1.jpg
的shell脚本,并希望它升级到
video10.jpg
并重新开始。脚本运行并给出
video1.jpg
,我希望它不断增加+1到10

#!/bin/bash
ftp -n -v $HOST << EOT
ascii
user $USER $PASSWD
prompt
get video1.jpg
bye
EOT
#/bin/bash
ftp-n-v$HOST你可以试试这个

#!/bin/bash
for((i=1;i<=10;i++))
do
ftp -n -v $HOST << EOT
ascii
user $USER $PASSWD
prompt
get video${i}.jpg
bye
EOT
done
#/bin/bash

对于((i=1;i我现在没有机会尝试,但这应该可以:

#!/bin/bash
for i in {1..10}; do
ftp -n -v $HOST << EOT
ascii
user $USER $PASSWD
prompt
get video$i.jpg
bye
EOT
done
!/bin/bash
因为{1..10}中的i;do

ftp-n-v$HOST正如其他答案已经指出的,传递给
ftp
程序的here文档只是文本,没有循环功能。但是,生成十个ftp会话来获取十个文件是浪费的——您可以生成一个here文档,指示
ftp
在一个sess中获取所有文件离子

#!/bin/bash
(
    printf '%s\n' ascii "user $USER $PASSWD" prompt
    printf 'get video%i.jpg' {1..10}
    printf 'bye\n'
) | ftp -n -v "$HOST"

但是,没有适当的错误处理工具。真正的解决方案是使用一个可正确编写脚本的
ftp
程序(
lftp
ncftp
,您有什么)或编写自己的简单客户端。

下面是一种在循环中添加ftp的方法

#!/bin/bash

HOST='hostname'
USER='username'
PASSWD='password'

# Local directory where the files are stored.
cd "/local/directory/from where to upload files/"

# To get all the files added today only.
TODAYSFILES=`find -maxdepth 1 -type f -mtime -1`


# remote server directory to upload backup
REMOTEDIR="/directory on remote ftp computer/"

for FILENAME in ${TODAYSFILES[@]}; do
  ftp -n -v $HOST << EOT
  ascii
  user $USER $PASSWD
  prompt
  cd $REMOTEDIR
  put $FILENAME
  bye
  EOT
done
!/bin/bash
主机名
USER='username'
PASSWD='password'
#存储文件的本地目录。
cd“/本地/目录/从何处上载文件/”
#仅获取今天添加的所有文件。
TODAYSFILES=`find-maxdepth 1-type f-mtime-1`
#要上载备份的远程服务器目录
REMOTEDIR=“/远程ftp计算机上的目录/”
对于${TODAYSFILES[@]};中的文件名

ftp-n-v$HOST它确实生成了video1.jpg和video2.jpg,但在那之后停止了#!/bin/bash HOST='xxxxxxx'USER='xxxxxx'PASSWD='xxxxxx'cd/var/www/armando.se/img ftp-n-v$HOST在脚本第#!/bin/bash行下放置set-x。您将在终端上获得输出。请共享该日志。