如何在完成其他命令时执行一个shell命令

时间:2013-07-03 12:33:46

标签: linux shell

我正在编写一个shell脚本,我在其中生成一个csv文件,之后在linux中附加并发送带有mutt命令的csv文件。但问题是csv文件没有生成,仍然执行mutt命令,它说找不到文件。那么有什么方法可以检查如果csv文件生成的命令完成,那么只有mutt命令execute.Below是我的脚本的内容,这两个语句一个接一个地执行。

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" srini@erpint.com -a /home/mayuri/detail.csv < /home/mayuri/detail.csv

3 个答案:

答案 0 :(得分:0)

使用bash,

检查文件是否存在:

    #generate you file ....

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

    fi

    #send your file

答案 1 :(得分:0)

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

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

答案 2 :(得分:-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" srini@erpint.com -a /home/mayuri/detail.csv < /home/mayuri/detail.csv
    fi