我开发了一个包含FTP调用的bash脚本。
因为我所做的操作是基于一个例程,所以我在macro中添加了一个.netrc
我的主目录中的文件。
这是我的宏的一个小例子

macdef getFile
        lcd ../../test/
        get test1.txt
        quit

在这个宏中,我正在更改本地目录并放置我想要的文件。
我想参数化的是文件名,因为我总是做相同的操作,但是文件名不同。
当在ftp连接内部调用宏时,是否有可能将参数传递给宏?
像这样的?
ftp>$ getFile anotherTestFile.txt

提前谢谢你

最佳答案

我只是做了同样的事。通常我会安装ncftp或其他更有用的东西,但我不能,所以我必须做的是制作一个shell脚本来完成它:
1)正确地设置.netrc以处理登录、目录更改等。不要退出宏或类似的操作,只要让它到达您希望文件到达的位置,然后宏停止。就像你所做的,但我只是不“退出”行。
2)使用以下命令生成shell脚本:

#!/bin/bash
if [[ -n "$1" ]]; then
  echo "put $1" > ftpCmdTemp
  ftp your.hostname.here < ftpCmdTemp
  rm ftpCmdTemp
else
  echo "need a filename"
fi

3)将此保存到路径中的某个位置,并使其可执行。我称之为“pushlog”,所以在我的例子中是“chmod+x pushlog”
4)现在我可以跑了
pushLog someLogFile.txt
它将转移我给它的任何东西(确保pushLog在你的路径上以及所有这些)。

07-24 09:28