在bash中的单个sftp连接上传输多个文件

问题描述 投票:0回答:1

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

我正在使用heredocs从此答案中采用方法,但失败了。

Loop inside "heredoc" in shell scripting

类似于下面的代码

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

   if [[ ! -z $listOfFiles ]]
   then
      for i in \$listOfFiles
      do
         put \$i /somedir
      done
   fi
done
EOF

我该如何实现?

linux bash shell
1个回答
0
投票

sftp不是shell,它不执行这样的脚本。

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

for i in *
do
    echo "put $i /somedir"
done | sftp -P 8922 <server>
© www.soinside.com 2019 - 2024. All rights reserved.