2013-07-03 100 views
-1

我正在編寫一個shell腳本,其中我正在生成一個csv文件,然後在linux中附加併發送此csv文件與mutt命令。但問題是,該csv文件不是生成並且仍然執行mutt命令,並且它說未找到該文件。那麼有什麼辦法可以檢查,如果csv文件生成命令完成,那麼只有mutt命令execute.Below是我的腳本的內容,兩個語句一個接一個地執行。如何執行一個shell命令完成其他

mysql --user=root --password= erpint -B -e "select * from user_info;" | sed  "s/'/\'/;s/\t/\",\"/g;s/^/\"/;s/$/\"/;s/\n//g" > /home/mayuri/detail.csv 
mutt -s "Mutt attach" [email protected] -a /home/mayuri/detail.csv < /home/mayuri/detail.csv 
+2

請分享一些代碼 - 您所描述的是shell腳本的正常行爲。 (或者你的意思是你想知道CSV生成命令何時失敗?從你的問題中不清楚。) – RichieHindle

+7

'command_a && command_b'? –

+1

你是否用'&'把csv生成命令放到後臺? shell腳本的典型行爲是按順序執行命令。 –

回答

0

使用bash,

,以檢查文件是否存在:

#generate you file .... 

    if [ ! -f /YourPathToTheFile/yourFile.txt ]; 
    then 
      echo "no file found, exiting and doing nothing"; 

    fi 

    #send your file 
0

所以,從字面上看,等待存在的文件:

while [ ! -f /home/mayuri/detail.csv ]; do 
    sleep 1 
done 
mutt -s "Mutt attach" [email protected] -a /home/mayuri/detail.csv < /home/mayuri/detail.csv 
-1

您可以$使用?如果先前的命令執行成功,則設置爲0;如果失敗,則設置爲1:

mysql --user=root --password= erpint -B -e "select * from user_info;" | sed  "s/'/\'/;s/\t/\",\"/g;s/^/\"/;s/$/\"/;s/\n//g" > /home/mayuri/detail.csv 
    if [ $? -eq 0 ]; then 
     mutt -s "Mutt attach" [email protected] -a /home/mayuri/detail.csv < /home/mayuri/detail.csv 
    fi 
+0

爲什麼這是低調? –