以下は、手動で実行すると正しい出力を提供しますが、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.pdf
uniq -i
あなたが望むものを得るための2つの簡単な方法があります。
- crontabファイルの環境変数で大文字と小文字を区別しないロケールを指定するか、
-f
--ignore-case
最初のフラグに(または)フラグを追加しますsort
。