linux - 在 bash 中通过单个 sftp 连接传输多个文件
问题描述
我想通过 shell 脚本从一个文件夹中传输单个 sftp 连接上的多个文件,在该文件夹中不断生成新文件。
我正在从这个答案中使用heredocs
但失败了。
像下面这样的代码
sftp -P 8922 <server> <<EOF
while [[ true ]]
do
listOfFiles=$(ls -1)
if [[ ! -z $listOfFiles ]]
then
put * /somedir
fi
done
EOF
我怎样才能做到这一点?
解决方案
sftp
不是外壳,它不会执行这样的脚本。
您需要执行一个打印所有put
命令的脚本,并将其通过管道传输到sftp
.
for i in *
do
echo "put $i /somedir"
done | sftp -P 8922 <server>
推荐阅读
- powershell - 使用 PowerShell 保存 Outlook 附件
- ios - 无法加载捆绑包 UITests,因为它已损坏或缺少必要的资源。尝试重新安装捆绑包
- unix - 从第一列中删除所有前导零,如果找到所有零,则保留 1 个零
- jenkins - 使用 Jenkins 和 Webhooks 的 GitHub API 配额
- python - 在networkX MultiDiGraph(由OSMNX制作)中获取节点DISPLAY(像素)坐标
- java - 当包含 Shape 的组的比例不是默认值时如何在 JavaFX 中绘制形状
- python-3.x - 将标量的dict转换为pandas DataFrame
- c# - MS project server 2016 指定的服务器可能不支持此操作中使用的 API
- html - 用于标记系统待办事项列表的 html 渲染和样式
- mysql - MySQL 错误 1148 和 1290:通过在 MySql Workbench 8 中导入 csv 文件来自定义日期类型格式 dd-mm-yyyy