首页 > 解决方案 > 在 bash 中通过单个 sftp 连接传输多个文件

问题描述

我想通过 shell 脚本从一个文件夹中传输单个 sftp 连接上的多个文件,在该文件夹中不断生成新文件。

我正在从这个答案中使用heredocs但失败了。

在 shell 脚本中的“heredoc”内循环

像下面这样的代码

sftp -P 8922 <server> <<EOF
while [[ true ]]
do
   listOfFiles=$(ls -1)

   if [[ ! -z $listOfFiles ]]
   then
         put * /somedir
   fi
done
EOF

我怎样才能做到这一点?

标签: linuxbashshell

解决方案


sftp不是外壳,它不会执行这样的脚本。

您需要执行一个打印所有put命令的脚本,并将其通过管道传输到sftp.

for i in *
do
    echo "put $i /somedir"
done | sftp -P 8922 <server>

推荐阅读