使用变量进行FTP状态检查 - Linux

时间:2017-09-06 00:24:05

标签: linux bash shell unix ftp

我正在做一个ftp,我想查看状态。我不想用'$?'因为大部分它返回0(成功)为ftp,即使内部ftp没有通过。

我知道我可以检查日志文件并从那里执行grep以获取“Transfer complete”(221状态)。这工作正常,但我不想这样做,因为我有许多不同的报告做ftp。因此,我想要避免为所有这些文件创建多个日志文件。

我可以在本地脚本变量中获取记录的信息并在脚本本身内处理吗? 类似于这些(我已经尝试了两种但都没有效果):

下面是类似于我想要做的事情:

ftp -inv ${HOST} > log_file.log  <<! 
user ${USER} ${PASS}
bin
cd "${TARGET}"
put ${FEEDFILE}
bye
!

有关如何在脚本变量中获取整个ftp输出然后在脚本中检查它的任何建议?

1 个答案:

答案 0 :(得分:1)

要将stdout捕获到变量,您可以使用bash的command substitution,因此OUTPUT=`cmd`OUTPUT=$(cmd)

以下是如何在您的案例中捕获ftp的输出的示例:

CMDS="user ${USER} ${PASS}
bin
cd \"${TARGET}\"
put \"${FEEDFILE}\"
bye"

OUTPUT=$(echo "${CMDS}" | ftp -inv ${HOST})