/ bashスクリプト内で変数をエコーバックする場合の/ SIGPIPE - linux、bash、シグナル

SIGPIPE - bashスクリプト内で変数をエコーする - linux、bash、signals

私はdebianの箱の上でcronjobを走らせています。スクリプトの特定の時点で、次のように変数を設定します。

HOSTNAME=$( hostname -s | tr A-Z a-z )

その後、その値をsyslogに記録します(したがって、すべてが正しく実行されていることがわかります)。

function log {
# just echo it
echo -n `date -u "+%s"`
echo -n " "
echo $1

/usr/bin/logger -t $0 -- $1
}

log "Hostname: ${HOSTNAME}"

しかし、この箱の上に、私はSIGPIPEを受け取ります。これはスクリプト全体で何度も発生します。私は "これが事実であることを確認するためにSIGPIPEを閉じ込めましたが、代わりに実際に問題を解決したいです。

SIGPIPEを引き起こしている可能性があるもの、およびそれを修正する方法を誰かに教えてもらえますか?私はもっ​​と小さなテストスクリプトを作成しようとしましたが、そのスクリプトは同じようには反応しません。

回答:

回答№1は1

私の推測:cron環境内では、PATHは限られています。これはシェルが見つけられないかもしれないことを意味します ホスト名 および/または tr。まず、hostnameとtrがどこにあるのかを調べて、代わりに絶対パスを使用します。次に例を示します。

HOSTNAME=$( /bin/hostname -s | /usr/bin/tr A-Z a-z )