我在网上搜索了很多,但还没有找到任何有用的信息。PFTP是否不允许您运行类似“IF”和“WHILE”的循环?
如果是的话,请告诉我语法,我已经试过用头撞它了。令人恼火的是,PuTTY允许这些命令,但是psftp似乎不允许,尽管它们都来自同一个家族。我真的希望有办法解决这个问题!

最佳答案

PSFTP不是一种语言。只是一个SFTP客户。SFTP本身只是一个在计算机之间移动文件的协议。如果您在远程计算机上设置了SFTP,那么它建议您运行SSH(因为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

你可以把整团乱七八糟的东西都圈起来。这里发生的是,我们正在向远程计算机发送一个命令来执行。命令的stdout返回并存储在变量test -f /tmp/foo && echo 'true' || echo 'false'中。那我们就测试一下。
如果您在windows中,则可以将其转换为批处理脚本,并使用plink.exe发送命令kind of like they do here。或者用SSH和SFTP客户机将cygwin放到您的计算机上,然后使用上面的内容。
这里最大的收获是,您将需要一个单独的脚本环境来执行循环并基于测试运行psftp。

09-10 09:39