【发布时间】:2011-06-24 20:45:25
【问题描述】:
出于某种原因,我无法让最后一行工作。它让我在 lftp user@server.org:~> 提示符下。有什么建议吗?
#!/bin/bash
echo "This will sync the background_docs folder"
lftp ftp://user:pass@server
mirror -r background_docs --only-missing -e
【问题讨论】:
出于某种原因,我无法让最后一行工作。它让我在 lftp user@server.org:~> 提示符下。有什么建议吗?
#!/bin/bash
echo "This will sync the background_docs folder"
lftp ftp://user:pass@server
mirror -r background_docs --only-missing -e
【问题讨论】:
我猜你希望 lftp 运行最后一行,
mirror -r background_docs --only-missing -e
对吗?
如果是这样,您必须告诉它这样做。在编写时,您的脚本只是启动 lftp,等待它完成,然后它才会尝试执行最后一行。
您可能想要的是使用lftp 的-e cmd 选项,例如:
#!/bin/bash
echo "This will sync the background_docs folder"
lftp -e "mirror -r background_docs --only-missing -e" ftp://user:pass@server
【讨论】:
您已经编写了一个 shell 脚本。每一行都在 shell 中作为新命令执行。当你点击 ^D 关闭lftp 时,它会尝试运行mirror 命令。 (甚至可能存在于您的系统中。)
如果您想以这种方式向程序发送命令,请查看expect(1) 工具。甚至还有一种学习模式可用(这比手写expect 脚本给了我更好的成功)。
但也许你的lftp(1) 命令可以用命令行参数来处理?那会更可靠。
【讨论】: