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

Linux 在bash中的单个sftp连接上传输多个文件,linux,bash,shell,Linux,Bash,Shell,我想通过shell脚本在单个sftp连接上从一个文件夹传输多个文件,在这个文件夹中不断生成新文件 我采用了这个答案的方法,使用了herdocs,但失败了 类似下面的代码 sftp -P 8922 <server> <<EOF while [[ true ]] do listOfFiles=$(ls -1) if [[ ! -z $listOfFiles ]] then put * /somedir fi done EOF s

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

我采用了这个答案的方法,使用了
herdocs
,但失败了

类似下面的代码

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

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

sftp-p8922

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

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

for i in *
do
    echo "put $i /somedir"
done | sftp -P 8922 <server>
中的i*
做
echo“放置$i/somedir”
完成| sftp-第8922页

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

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

for i in *
do
    echo "put $i /somedir"
done | sftp -P 8922 <server>
中的i*
做
echo“放置$i/somedir”
完成| sftp-第8922页

你可以只做
put*/somedir
,你不需要循环。你可以只做
put*/somedir
,你不需要循环。