команды сортировки и uniq не работают, как ожидалось, когда выполняются cron

Ниже приведена часть скрипта, который дает правильный вывод при запуске вручную, но дает неправильный вывод при запуске с использованием 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 в соответствии с поведением командной строки?

Язык, используемый в cron, отличается от используемого в вашей интерактивной среде. У одного есть регистр без учета регистра, а другой нет.

Это означает, что в интерактивном режиме первая sort помещает / /universal/webselfservice/pdf/r60.pdf /universal/webselfservice/pdf/R60.pdf /universal/webselfservice/pdf/r60.pdf и /universal/webselfservice/pdf/R60.pdf рядом, поэтому uniq -i может их комбинировать. Но в локали, используемой cron, они не смежны и подсчитываются отдельно.

Есть два простых способа получить то, что вы хотите:

  1. укажите нечувствительный к регистру язык как переменную среды в файле crontab или
  2. add -f (или --ignore-case ) флаг для первого sort .