我正在做一个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输出然后在脚本中检查它的任何建议?
答案 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})