重定向输出不起作用

时间:2012-08-28 00:08:40

标签: shell scripting

我正在尝试将源代码管理软件中最新的更改列表编号输出到日志文件中。我知道脚本工作正常,直到获得更改列表编号。下面的脚本在我手动运行时起作用,但在从crontab触发时似乎不起作用。我不知道为什么它不起作用。我在使用Mac OS X 10.7的计算机上运行此脚本,权限设置为555。

changelist=${changelist_ouput}

output_file="../../output_dir/result_log.txt"

if [[ -e ${output_file} ]];
then
    # Delete previous changelist information
    sed -i.bak '/changelist/d' "${output_file}"
    rm "${output_file}.bak"

    # Add current changelist information
    echo "changelist=${changelist}" >> "${output_file}"
else
    echo "WARNING: Failed to update changelist information"
fi

我将不胜感激。

1 个答案:

答案 0 :(得分:2)

cron可能没有使用与您使用的相同的当前目录。由于您使用output_file的相对路径,这会将输出转储到相对于cron当前目录的某个路径(并且因为../../output_dir可能不存在,所以它只是失败)。

您必须使用output_dir的绝对路径,或者创建相对于脚本目录(dirname $0)的路径。另请参阅Crontab - Run in directory