1

bash スクリプトから次のコマンドを実行しています。

comm -23 file1 file2 > file3

( file1&file2は重複除外され、最初にソートされます)

これにより、file3一意の行file1のみを含む が生成されます(必要なもの)。

コマンド ラインからスクリプトを実行する場合、問題はありません。ただし、 から実行するとcrontab、はるかに大きな (正しくない) が生成されfile3ます。ユーザーは、手動で実行した場合のcrontabログイン ユーザーと同じです。

何がそのような不一致を引き起こすかについての手がかりはありますか?

前もって感謝します

4

1 に答える 1

2

シェルから実行されているプログラムと内部から実行されているプログラムの間のほとんどすべての不一致はcron、環境に関係しています。

最初に行うことは、両方の場所でのようなものを実行しenv、出力をキャプチャすることです。パスが異なるため、別の実行可能ファイルを実行するのと同じくらい簡単かもしれません。

もう 1 つの可能性はLC_COLLATE、2 つの環境間で設定が異なることです。ページからinfo:

を使用する前に、ロケールcommで指定された照合順序を使用して入力ファイルをソートする必要があります。LC_COLLATE

この--check-orderオプションは、これをチェックする方法であり、ソートされていない入力 (使用していると思われる照合とは異なる照合に基づくソートされていないものを含む) で致命的なエラーを引き起こす可能性があります。

于 2011-11-14T05:31:47.140 に答える