ftp接続が失敗した場合、またはegrepを使用して成功した場合に返すbashスクリプトを実行しています。問題は、egrepで単語を取得しようとしたときに0が返されますが、 2.egrepはbashスクリプトで0を返していますが、正しい値を戻すコマンドを手動で実行しています。 UNIXのbash
を返すことは、これは私のコードです:
#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
@anubhava grep -Eqが何も返さない... –
すべてのコマンドと同様に、有用な終了コードを返します。 'if grep -Eq"あなたの言葉 "yourfile;エコー "それは一致した" fi' –