【问题标题】:Conditions in unix ftp scriptunix ftp 脚本中的条件
【发布时间】:2017-11-05 20:26:31
【问题描述】:

我正在尝试编写一个代码来检查特定日期的文件,如果它存在,它将把它带到我的本地主路径,如果它不存在,那么将检索不同日期的其他文件。

#!/bin/ksh

FILE1="CAS_20170604.txt"
FILE2="CAS_20170603.txt"

/usr/bin/ftp -n 93.45.148.9 << EOF
    user usr passwd
    cd "/abc/def"
    bin
    get $FILE1

if [ ! -f $FILE1 ];
then
    cd "/abc/def"
    bin
    get $FILE2
fi
    bye
    !EOF! 

在执行脚本时,我得到了两个不需要的文件和以下错误:

?Invalid command
?Invalid command

请有人可以在这里帮助我。

【问题讨论】:

  • 你有像wgetcurlfetch这样的命令行客户端吗?与其编写脚本以直接使用 ftp 客户端,在我看来,使用可以提供您的 shell 脚本可以解释的返回码的东西来发出 FTP 协议请求会更容易。如果您认为这可能是一种选择,很高兴在答案中展示。

标签: shell unix ftp sh


【解决方案1】:

您不能在 ftp 脚本中使用 shell 命令。

你必须把脚本一分为二:

/usr/bin/ftp -n 93.45.148.9 << EOF
user usr passwd
cd "/abc/def"
bin
get $FILE1
bye
!EOF! 

if [ ! -f $FILE1 ];
then
    /usr/bin/ftp -n 93.45.148.9 << EOF
    user usr passwd
    cd "/abc/def"
    bin
    get $FILE2
    bye
    !EOF! 
fi

【讨论】:

  • 谢谢 :-) 它工作正常,另外我在执行第一个 ftp 时使用了重定向来防止输出“无法打开文件”显示在屏幕上,以防当前日期的文件是未找到。喜欢:/usr/bin/ftp -n 93.179.136.9 /dev/null 2>&1
猜你喜欢
  • 2010-09-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-04
  • 1970-01-01
  • 1970-01-01
  • 2019-05-19
  • 1970-01-01
相关资源
最近更新 更多