最初のスクリプトの出力を取得していますが、次のif
スクリプトではステートメントの2番目の部分の出力を取得できません。if
#!/bin/ksh
err_abc=`grep -r "XYZ" /home |wc -l`
err_AB=`grep -r "XYZ" /home` > /dev/null 2>&1
err_ERR=`grep -r "ERROR" /home |wc -l`
err_eRR=`grep -r "ERROR" /home` > /dev/null 2>&1
if [ $err_abc -gt 0 ]
then
echo "$err_AB"
else
echo "No errors found"
if [ $err_ERR -gt 0 ]
then
echo "$err_eRR"
else
echo " \n No err files found"
exit 0
fi
fi
ベストアンサー1
コードがあなたが思うように動作していると確信していますか?ロジックを見やすくするためにインデントしましょう。
if [ $err_abc -gt 0 ]; then
echo "$err_AB"
else
echo "No errors found"
if [ $err_ERR -gt 0 ]; then
echo "$err_eRR"
else
echo " \n No err files found"
exit 0
fi
fi
2番目のブロックは、最初のブロックのテストがfalseの場合にのみif
実行されます。すべてのケースで両方のテストを実行するには、次のものを再構築する必要があります。
if [ $err_abc -gt 0 ]; then
echo "$err_AB"
else
echo "No errors found"
fi
if [ $err_ERR -gt 0 ]; then
echo "$err_eRR"
else
echo " \n No err files found"
exit 0
fi
exit 0
また、最後のステートメント句は、2番目のテストが偽の場合にのみ実行されますif
(存在する場合)。else
これがあなたの意図ではない場合、声明は適切に動かされるべきです。