我正在编写一个需要将变量传递给sftp批处理的脚本。我已经能够根据我搜索过的其他文档获得一些命令,但不能完全满足我的需要。
最终目标是在远程服务器上类似于文件测试运算符:
( if [-f $a ] then:; else exit 0;)
最终,我希望文件在文件存在(:)时继续运行脚本,如果不存在则退出0(不是退出1)。远程计算机是 Windows 服务器,而不是Linux。
以下是我所拥有的:
注意 - 我尝试传递的变量$source_dir
会根据调用此函数的脚本的输入参数进行更改。这和ls
通配符是棘手的部分。我在寻找特定文件时能够使它工作,但不仅仅是"任何"文件。
${source_dir}= /this/directory/changes
RemoteCheck () {
/bin/echo "cd $source_dir" > someBatch.txt
/bin/echo "ls *" >> someBatch.txt
/usr/bin/sftp -b testBatch.txt -oPort=${sftp_port} ${sftp_ip}
exit_code=$?;
if [ $exit_code -eq 0 ]; then
:
else
exit 0
fi
可能有更好的方法可以做到这一点,但我搜索了多个论坛,但还没有找到一种方法来操纵它。
任何帮助都表示赞赏,大师们一直非常乐于助人!
答案 0 :(得分:1)
您不能仅使用OpenSSH sftp
的退出代码来测试是否存在任何文件。
您可以将sftp
输出重定向到文件并解析它以查看是否有任何文件。
您可以使用shell echo
命令从输出的其余部分界定列表,如:
!echo listing-start
ls
!echo listing-end