当从cron调用脚本时,脚本中的sed命令不起作用

时间:2014-03-13 22:06:34

标签: linux shell sed cron ksh

我一直在努力解决这个问题。我有一个脚本,在其中,我有以下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脚本。

2 个答案:

答案 0 :(得分:0)

占位符让OP自己决定将其标记为已解决。

  

感谢您的回复。所以在sed命令之前,$PROCESS_GROUP实际上是   派生自SQL调用,sqlplus。此调用包含在函数内部。

     

由于某种原因,当它被包装在函数内并且cron作业运行脚本时,   PROCESS_GROUP变量已损坏。它将有两行数据和   因此使用错误

删除sed命令      

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调用),最终终于工作了