PSFTP 可以执行循环吗?

Can PSFTP execute loops?

我在互联网上搜索了很多,但还没有找到任何有用的信息。 PFTP 是否根本不允许 运行 像 'IF' 和 'WHILE' 这样的循环?

如果是这样,请让我知道语法,我试着用我的头来反对它。恼人的是,PuTTY 允许这些命令,但 psftp 似乎不允许,即使它们都来自同一个系列。我真的希望有解决办法!

PSFTP 不是一种语言。它只是一个 SFTP 客户端。 SFTP 本身只是一种在计算机之间移动文件的协议。如果您在远程计算机上设置了 SFTP,那么它会建议您安装 SSH 运行ning(因为 SFTP 通常与 SSH 服务器安装捆绑在一起)。

您可以在bash shell 脚本中进行测试,例如,查看该文件是否存在于远程服务器上,然后根据结果执行您的psftp 命令。类似于:

#!/bin/bash

# test if file exists on remote system
fileExists=$(ssh user@yourothercomputer "test -f /tmp/foo && echo 'true' || echo 'false'")

if $fileExists; then
    psftp <whatever>
fi

你可以把整个乱七八糟的东西放在一个循环或其他什么地方。这里发生的事情是我们正在向远程计算机发送一个命令 test -f /tmp/foo && echo 'true' || echo 'false' 来执行。命令的标准输出被返回并存储在变量 fileExists 中。那我们就测试一下吧。

如果您在 windows 中,您可以将其转换为批处理脚本并使用 plink.exe 发送命令 kind of like they do here。或者可能只是在您的计算机上使用 SSH 和 SFTP 客户端安装 cygwin 并使用上面的内容。

这里最大的收获是您需要一个单独的脚本环境来执行循环和 运行 基于测试的 psftp。