LINUX.ORG.RU

tcl regexp cron - что-то такое странное

 , , ,


0

1

Напишу странное, т.к. мозг разрушен дебагом. regexp работает по разному. Если в shell всё матчится, то при запуске в кроне ровно наоборот. Такое где-то у кого-то встречалось в этой реальности?

Если в shell всё матчится, то при запуске в кроне ровно наоборот.

Что за регекспы? Встроенные в bash? Если да, то классика жанра: разное окружение. Если у пользователя шелл bash, то у крона sh. И это не одно и то же.

akk ★★★★★
()
Последнее исправление: akk (всего исправлений: 1)
Ответ на: комментарий от macumazan

Не понял: когда вы видели разное поведение, был ascii или не ascii?

Если не ascii: надо иметь в виду, что при чтении самого скрипта интерпретатором используется [encoding system] из локали. Это никак не поменять в самом скрипте, даже если вы там первой строчкой поставите encoding system utf-8, к моменту её исполнения весь скрипт уже прочитан.

Можно притащить переменные локали LC_*, LANG из шелловского окружения в кроновское, тогда будет одинаковый encoding system там и сям.

Обработка % в кроне тоже хороший кандидат на проблему, если вы скрипту что-то нетривиальное передаёте через командную строку (не сам ли регексп?).

В общем выкладывайте всё, что лежит в кронтабе, что лежит в шелле, может ещё и исходники скрипта. Пока вы никак не помогаете вам помочь.

LeninGad
()
Ответ на: комментарий от LeninGad

Запускаю ./file.tcl в shell все работает как надо. Запускаю его через крон - regexp не матчится. Сначала контекст крона был с Encoding iso8859-1. Поменял на utf-8 - не помогло.

Да, я выделю пролемный код и закину сюда.

macumazan ★★
() автор топика
Ответ на: комментарий от LeninGad

Да. я так и делал. В общем, пока готовил упрощенный код для дебага, он заработал сразу и до кучи и основной тоже. Какая-то магия. Пока тамаут, судя по всему. Спасибо.

macumazan ★★
() автор топика
Последнее исправление: macumazan (всего исправлений: 1)
Ответ на: комментарий от macumazan

Да. Нашлось. rrdtool fetch делает возврат чисел в формате в засимиости от LC_. В итоге regexp изначально делался на 6,5940000000e-01 с учетом запятой, а в кроне число выводилось уже с точкой.

macumazan ★★
() автор топика