0

ソース管理ソフトウェアから最新のチェンジリスト番号をログファイルに出力しようとしています。チェンジリスト番号を取得するまで、スクリプトは正常に機能することを知っています。以下のスクリプトは、手動で実行すると機能しますが、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

助けていただければ幸いです。

4

1 に答える 1

2

cronおそらく、使用しているのと同じ現在のディレクトリを使用していません。に相対パスを使用するため、これにより、出力がの現在のディレクトリoutput_fileからの相対パスにダンプされます(おそらく存在しないため、失敗するだけです)。cron../../output_dir

には絶対パスを使用するoutput_dirか、スクリプトディレクトリ(dirname $0)からの相対パスを作成する必要があります。Crontab-ディレクトリで実行も参照してください。

于 2012-08-28T00:11:18.520 に答える