在回显bash脚本中的变量时的SIGPIPE

时间:2011-09-28 13:50:59

标签: 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 个答案:

答案 0 :(得分:1)

我的猜测:在cron环境中,PATH是有限的,这意味着shell可能无法找到主机名和/或 tr 。首先,找出hostname和tr所在的位置,改为使用绝对路径,例如:

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