2013-07-03 48 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

为什么这是低调? –