Сценарий оболочки в команде после сеанса для подсчета количества целевых строк

Я пишу сценарий оболочки после сеанса, в котором я должен подсчитать цель, которая представляет собой количество строк плоского файла, и если количество больше 500, то отправить письмо с уведомлением о том же. Но в сценарии есть ошибки.

DIR="/data/research_dev/inbfiles"
cd /data/research_dev/inbfiles
if [ "$(wc -l ff_invoicepreviewqueue1.csv)" > 500 ]; then
echo "Hi," > InvoicePreview.dat
echo " The row count of InvoicePreviewQueue is:   " >> InvoicePreview.dat
#wc -l ff_invoicepreviewqueue1.csv >> InvoicePreview.dat
echo "                  " >> InvoicePreview.dat
echo "            " >> InvoicePreview.dat
echo "Thanks and Regards," >> InvoicePreview.dat
echo "BI Support team." >> InvoicePreview.dat
mailx -s "Alert!! Count is out of limits!! " "[email protected]" < InvoicePreview.dat
rm -f InvoicePreview.dat.dat
#

Помогите пожалуйста найти ошибку


person Blossom    schedule 09.02.2015    source источник
comment
Привет, Марек. Я действительно не хочу загружать данные, я просто хочу проверить количество для sysdate -1, и если количество больше 500, отправьте электронное письмо. Так что я могу сделать что-то без загрузки данных   -  person Blossom    schedule 09.02.2015
comment
Я должен реализовать это в информатике. Итак, я загрузил данные в плоский файл и написал скрипт, который будет подсчитывать строки в целевом файле, но в этом скрипте есть ошибка. Журнал сеансов Informatica не дает полной информации об этом.   -  person Blossom    schedule 09.02.2015
comment
Я изменил подход. Теперь я загружаю общее количество и флаг Y или N в плоский файл, а также передаю их в переменную рабочего процесса, но я не могу получить их в сценарии после сеанса. Я передаю его скрипту следующим образом: sh -x /data/research_dev/scripts/InvoicePreview.sh $$wf_Count $$wf_Count_Flag›/data/research_dev/inbfiles/InvoicePreview.txt   -  person Blossom    schedule 09.02.2015


Ответы (2)


Команда wc -l ff_invoicepreviewqueue1.csv обычно возвращает count с именем файла, например, 499 ff_invoicepreviewqueue1.csv. Таким образом, вы не можете сравнить его с 500. Вы можете сделать что-то вроде cat ff_invoicepreviewqueue1.csv|wc -l, которое вернет только количество.

Кроме того, оператор для большего, чем «-gt», «>», вероятно, не будет работать. Итак, чтобы переписать ваш оператор if, он будет:

if [ "$(cat ff_invoicepreviewqueue1.csv|wc -l)" -gt 500 ]; then

    # send mail

fi

Не забудьте закрыть условие if с помощью fi.

person Samik    schedule 09.02.2015

Спасибо, это помогло. Я загрузил целевой плоский файл из источника SQL-сервера, а затем в задаче назначения я назначил переменную рабочего процесса с исходными строками успеха, а в задаче принятия решения, если строки больше 500, я вызвал script1, и если строки меньше, я называется script2

 Rows="$(cat /data/research_dev/inbfiles/ff_invoicepreviewqueue.txt|wc -l)"
 echo "Hi," > InvoicePreview.dat
 echo " The row count of InvoicePreviewQueue is:   " >> InvoicePreview.dat
 echo $Rows" Rows">> InvoicePreview.dat
 echo " Please re run the process to correct the count   " >> InvoicePreview.dat
 echo "   " >> InvoicePreview.dat
 echo "                 " >> InvoicePreview.dat
 echo "Thanks and Regards," >> InvoicePreview.dat
 echo "BI Support team." >> InvoicePreview.dat
 mailx -s "Alert!! The count of InvoicePreviewQueue is "$Rows"!! " "[email protected]" < InvoicePreview.dat
 rm -f InvoicePreview.dat.dat
  #

И еще один скрипт, который выполняется, если счет меньше 500 и отправляет почту. Всем спасибо за помощь!

person Blossom    schedule 10.02.2015