【发布时间】:2023-03-28 09:05:01
【问题描述】:
我正在编写一个需要将变量传递给 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
可能有更好的方法来做到这一点,但我已经搜索了多个论坛,还没有找到一种方法来操纵它。
感谢您的任何帮助,您的大师一直非常乐于助人!
【问题讨论】:
-
您确定不想
cd $source_dir吗?在您的代码中,您使用ls *覆盖它。 -
我覆盖它是什么意思?它不是连续执行命令吗?我可能没有正确使用它 - 但我认为我可以像这样将几个命令串在一起,它们会按顺序执行?
-
@alvits - 我明白你的意思。我偶然发现了这个并编辑了重定向器以匹配。这是我的问题。