-1

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

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
4

3 回答 3

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
于 2013-07-03T13:07:51.850 回答
0

使用 bash,

检查文件是否存在:

    #generate you file ....

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

    fi

    #send your file
于 2013-07-03T12:56:07.630 回答
-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
于 2013-07-03T13:28:14.020 回答