そのため、SQL DB からの出力に基づいて、一連のファイルに特定のエラーがあるファイルをチェックするスクリプトを作成しています。エラーのあるファイルがメールで送られてきます。
問題は、メールを送信しようとすると、「script.sh: 9: mutt: not found」というメッセージが表示されることです。これは、PATH 変数が作成される前にメールを送信すると発生しません。
スクリプトは次のようになります。
JOB=$(sudo cat /tmp/sqltest.txt | awk '{ print $5 }')
DATE=$(sudo cat /tmp/sqltest.txt | awk '{ print $1 }')
CODE=$(sudo cat /tmp/sqltest.txt | awk '{ print $3 }')
PATH=$(grep ${CODE} /tmp/unzip/* | awk '{ print $1 }' | cut -d':' -f1 | head -n 1)
echo "File containing error message for job "${JOB}" at "${DATE}"" | mutt -a "/tmp/sqltest.txt" -s "Mail title" -- <mail@address>
要するに、grep はエラー コードのあるファイルを見つけ、awk はファイルへのパスを含む列を選択し、列にはタイムスタンプも付いており、エラーが報告された場合にカットが削除され、head によって結果が 1 つだけ得られることが保証されます。いくつかの場所。
残念ながら /tmp/sqltest.txt の代わりに PATH が必要ですが、PATH の代わりに変数 CODE の後に mutt を使用すると、mutt でメールを送信できます。
これを引き起こす原因について何か考えはありますか?