我想通过外壳脚本从一个不断生成新文件的文件夹中,在单个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
我该如何实现?
sftp
不是shell,它不执行这样的脚本。
您需要执行一个打印所有put
命令的脚本,并将其通过管道传输到sftp
。
for i in *
do
echo "put $i /somedir"
done | sftp -P 8922 <server>