Команда mv не работает при использовании в случаях? - PullRequest
0 голосов
/ 24 февраля 2019

Я пытаюсь переместить сгенерированный файл в соответствующий каталог.Когда я не использую кейсы, он нормально перемещает мой файл в нужную директорию.Тем не менее, теперь, когда я представляю разные параметры с помощью кейсов, он даже больше не перемещает файл.Как указано в комментариях, я не получаю никаких ошибок.Я не вижу проблем в моих журналах

#!/bin/bash
#---------------------------------------------------------------------------------
# The statement below includes the batch path directories.


daily="/POO/fos/File_Ordering_Logs/Daily"
weekly="/POO/fos/File_Ordering_Logs/Weekly"
monthly="/POO/fos/File_Ordering_Logs/Semiannually"

spoolFilterDir="/POO/fos/spool_error_chk"

_endDate=$(date +"%m%d%Y")
_day=$(date +"%u")

#------------------------------------------------------------------------

case "$1" in
    (daily)
        directory=$daily
        _beginDate=$(date -d "1 day ago" +"%m%d%Y")
        report="$_endDate"DailyFOSReport".csv"
        ;;

    (weekly)
        directory=$weekly
        _beginDate=$(date -d "7 days ago" +"%m%d%Y")
        report="$_beginDate-$_endDate"WeeklyFOSReport".csv"
        ;;

    (monthly)
        directory=$monthly
        _beginDate=$(date -d "183 days ago" +"%m%d%Y")
        report="$_beginDate-$_endDate"SemiAnnualFOSReport".csv"
        ;;  
esac

touch "$spoolFilterDir/$report"

#------------------------------------------------------------------------
# Error filter
#
exec_error_filter()
{
cd $spoolFilterDir

grep --include "*.csv" -e "ERROR" -e^SELECT -e^TNS -e^SP2 -e^ORA ${spoolFilterDir}/${report}
greprc=$?

if [[ $greprc -eq 0 ]] ; then 
    echo "--------------------------------"
    echo "Erroneous data spooled to .csv report. Removing report."
    echo "--------------------------------"
    rm ${spoolFilterDir}/${report}

else
    echo "FOS report successfully generated."
fi  

case "daily" in
    (daily)
        mv ${spoolFilterDir}/${report} $daily
        ;;
    (weekly)
        mv ${spoolFilterDir}/${report} $weekly
        ;;
    (monthly)
        mv ${spoolFilterDir}/${report} $monthly
        ;;
esac

}

#-----------------------------------------------------------------------------
#END

1 Ответ

0 голосов
/ 24 февраля 2019

Ваша ошибка здесь:

case "daily" in  ### <- always hardcoding the word "daily"
   (daily)
        mv ${spoolFilterDir}/${report} $daily
        ;;
    (weekly)
        mv ${spoolFilterDir}/${report} $weekly
        ;;
    (monthly)
        mv ${spoolFilterDir}/${report} $monthly
        ;;
esac

Я думаю, вы имели в виду:

case "$1" in
    (daily)
        mv ${spoolFilterDir}/${report} $daily
        ;;
    (weekly)
        mv ${spoolFilterDir}/${report} $weekly
        ;;
    (monthly)
        mv ${spoolFilterDir}/${report} $monthly
        ;;
esac

То, как вы это написали, код всегда попадет в «ежедневный» случай нетнезависимо от того, что.

Кроме того, ваша функция exec_error_filter нигде не вызывается.Это также может объяснить, почему ничего не происходит.

...