0

そのため、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 でメールを送信できます。

これを引き起こす原因について何か考えはありますか?

4

2 に答える 2

2

ここで得られたのは、環境変数 (および非常に重要な変数!) を使用しようとする典型的なケースです: エラーを取り除くために別の変数名を使用するだけです。一部の人が示唆したように、変数を完全に大文字にしないようにすることをお勧めします。

環境変数 Bash 内にはいくつかの環境変数があり、そのPATHうちの 1 つです。コマンドを使用して、環境変数とシェル変数の両方のリストを取得できますset

出典ウィキペディアの環境変数

于 2013-05-08T10:29:58.247 に答える