【问题标题】:can't run mirror command in bash script无法在 bash 脚本中运行镜像命令
【发布时间】: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

【问题讨论】:

    标签: bash ftp


    【解决方案1】:

    我猜你希望 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
    

    【讨论】:

    • 这有效,现在我只需等待几分钟即可接受。
    【解决方案2】:

    您已经编写了一个 shell 脚本。每一行都在 shell 中作为新命令执行。当你点击 ^D 关闭lftp 时,它会尝试运行mirror 命令。 (甚至可能存在于您的系统中。)

    如果您想以这种方式向程序发送命令,请查看expect(1) 工具。甚至还有一种学习模式可用(这比手写expect 脚本给了我更好的成功)。

    但也许你的lftp(1) 命令可以用命令行参数来处理?那会更可靠。

    【讨论】:

    • Expect 工具也可以。原来这个系统是使用cygwin的windows。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-10-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多