我一直在努力解决这个问题。我有一个脚本,在其中,我有以下sed命令:
DEF_CTLFILE1=$FDF_TOP/programs/sw_ctrl.ctl
sed "s/process_group_to_be_replaced_here/$PROCESS_GROUP/g" \
${DEF_CTLFILE1} > ${fname1}.ctl
当我允许cron作业执行脚本时,将生成输出(fname1.ctl),但其大小为0.
请注意,我确保这两个文件在变量定义(fname1)中包含aboslute路径。
当我手动执行脚本时,它运行正常。我想我需要更多地了解cron作业和权限以及可见性,但我刚刚开始。任何和所有提示将不胜感激。
我的Linux版本是Linux 2.6.18-348.6.1.0.1.el5 x86_64,Red Hat Linux 5.9 这是一个ksh脚本。
答案 0 :(得分:0)
占位符让OP自己决定将其标记为已解决。
感谢您的回复。所以在sed命令之前,
$PROCESS_GROUP
实际上是 派生自SQL调用,sqlplus。此调用包含在函数内部。由于某种原因,当它被包装在函数内并且cron作业运行脚本时,
删除sed命令PROCESS_GROUP
变量已损坏。它将有两行数据和 因此使用错误
sed: -e expression #1, char 41: unterminated
S'`我最终重构了整个脚本(例如从函数中删除SQL调用) 它终于工作了。 - joshuafrostByte 3月25日18:14
答案 1 :(得分:0)
感谢您的回复。所以在sed命令之前,$ PROCESS_GROUP实际上是从SQL调用sqlplus派生的。此调用包含在函数内部。
由于某种原因,当它被包装在函数内并且cron作业运行脚本时,PROCESS_GROUP变量被破坏了。它将有两行数据,因此使用错误
来删除sed命令sed:-e expression#1,char 41:unterminateds'`。
我最终重构了整个脚本(例如从函数中删除SQL调用),最终终于工作了