2015-02-09 72 views
0

我正在編寫一個post session shell腳本,在那裏我必須計算目標是一個平面文件行數,如果計數大於500,則發送郵件通知一樣。但腳本中存在一些錯誤。Shell腳本在post session命令中計算目標行數

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 
# 

請幫我找到錯誤

+0

嗨Marek ..我真的不想加載數據,我只是想檢查計數爲sysdate -1,如果計數大於500,然後發送電子郵件。所以我可以做什麼而不加載數據 – Blossom 2015-02-09 08:28:20

+0

我必須在informatica中實現它。所以我將數據加載到平面文件中,並編寫了一個腳本,可以對目標文件中的行進行計數,但在此腳本中存在錯誤。 Informatica會話日誌沒有提供相同的詳細信息.. – Blossom 2015-02-09 08:55:18

+0

我已經改變了方法..我現在加載總數並將Y或N標記爲平面文件並將它們傳遞給工作流變量,但我無法讓他們在會後腳本。我將它傳遞給腳本,如下所示:sh -x /data/research_dev/scripts/InvoicePreview.sh $$ wf_Count $$ wf_Count_Flag> /data/research_dev/inbfiles/InvoicePreview.txt – Blossom 2015-02-09 09:45:29

回答

1

命令wc -l ff_invoicepreviewqueue1.csv通常會返回與文件名一樣,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 

請記住用fi關閉if條件。

0

感謝它幫助.. 我從sql服務器源中加載目標平面文件,然後在賦值任務中,我爲源成功行分配了工作流變量,並在判定任務中行數大於500的情況下,我調用了script1,if該行不太我叫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,併發送郵件,其執行。 謝謝大家的幫助!