cronを実行すると、sortコマンドとuniqコマンドが期待どおりに機能しません。

cronを実行すると、sortコマンドとuniqコマンドが期待どおりに機能しません。

以下は、手動で実行すると正しい出力を提供しますが、cronを使用して実行すると誤った出力を提供するスクリプトの一部です。

sort < file1.out | uniq -ic |sort -nr> file2.out

コマンドラインから実行すると、大文字と小文字が無視され、行グループの数が提供されます。例:

73 /universal/webselfservice/pdf/r60.pdf

cronで実行すると、数は大文字と小文字で区別されます。たとえば、次のようになります。

47 /universal/webselfservice/pdf/r60.pdf
26 /universal/webselfservice/pdf/R60.pdf

cron出力がコマンドラインの動作と一致するようにするにはどうすればよいですか?

答え1

cron で使用されるロケールは、対話型環境のロケールとは異なります。 1つは大文字と小文字を区別しない照合順序、もう1つはそうではありません。

これは、対話的に、互いに結合できるように最初に配置され、隣に配置されることsortを意味します。ただし、cronが使用するロケールでは、隣接せずに別々に計算されます。/universal/webselfservice/pdf/r60.pdf/universal/webselfservice/pdf/R60.pdfuniq -i

あなたが望むものを得るための2つの簡単な方法があります。

  1. crontabファイルの環境変数で大文字と小文字を区別しないロケールを指定するか、
  2. -f--ignore-case最初のフラグに(または)フラグを追加しますsort

関連情報