Не знаю, если вы все еще ждете ответа, это может помочь.
awk -v newline=test -v trigger='create table "informix"' '
{a[NR]=$0}
NR>2 { if (index($0,trigger)>0) { a[NR-2]=newline; }}
END {
for (i=1;i<=NR;i++) { print a[i] }
}
' sacro.sql
Команды, выполняемые Cron, имеют чрезвычайно простую среду выполнения и настройку пути, частая ошибка заключается в проверке команды или сценария в качестве вашего обычного идентификатора пользователя. Затем он терпит неудачу при запуске Cron.
Экспортированные переменные среды часто игнорируются. Целесообразно выполнить окончательный тест от имени пользователя root с полностью урезанной средой, в качестве окончательного теста использовать вспомогательную оболочку перед развертыванием. Вы всегда можете добавить одноразовое задание cron, которое просто печатает его env в файл журнала, это позволяет вам эмулировать точные условия, в которых будет выполняться ваша команда при вызове Cron. Второе преимущество, если возникает какая-либо ошибка, заключается в том, что ее можно отобразить на вашем терминале, так проще отлаживать.
Похоже, переменная, назначенная в вашем скрипте, не экспортируется, поэтому SSH не подхватит ее.
Также важно использовать абсолютные пути к файлам в сценарии, если только вы не измените каталог специально, вы не можете предположить, что находитесь в определенном каталоге, печать рабочего каталога в одном -вне тестовом сценарии, ранее упомянутом помогает также. Вы не можете предполагать, что все дистрибутивы идентичны в этом отношении. Проверить конечно не помешает.