【发布时间】:2017-11-07 17:51:52
【问题描述】:
我正在执行一个 bash 脚本,如果 ftp 连接失败或使用 egrep 成功,则返回我,问题是当我尝试使用 egrep 获取单词时返回 0 但如果我手动执行命令则返回2.
这是我的代码:
#Create the FTP Connection.
for ip_address in ${IP_ADDRESS[@]}; do
ftp ${ip_address} <<ftp_commands > ${FTP_RESULTS}
user "${USER_ID}" "${USER_PASSWORD}"
pwd
bye
ftp_commands
ftp_result_id=`egrep -c "Login failed|Connection refused|Not connected|Connection timed out" ${FTP_RESULTS}`
if [ ${ftp_result_id} -gt 0 ]; then
echo "$(date +%m/%d/%y_%H:%M:%S) - ${ip_address} - Not connected" >> ${CONNECTION_RESULTS_FILE}
else
echo "$(date +%m/%d/%y_%H:%M:%S) - ${ip_address} - Connected" >> ${CONNECTION_RESULTS_FILE}
fi
done
ftp_results_id 在 egrep -c 命令中返回 0,但我在运行后手动执行并创建文件“FTP_RESULTS”并且正在工作,假设找到 2 个匹配“未连接”
有什么建议吗?
【问题讨论】:
-
使用
grep -Eq,然后使用退出代码 -
@anubhava grep -Eq 没有返回任何东西...
-
像所有命令一样,它返回一个有用的退出代码。
if grep -Eq "your terms" yourfile; then echo "It had matches"; fi -
能否将错误写入stderr?
2> ${FTP_RESULTS}可以工作吗? -
我不得不使用嵌套的 if,这对我来说是这样的