Shell脚本调用JIL编辑器添加Autosys任务时执行中断求助
解决Shell脚本调用JIL编辑器卡住的问题
问题根源
你遇到的核心问题是:JIL是交互式程序,直接在脚本中调用会接管标准输入,等待用户手动操作,导致脚本暂停执行。而你用子shell$()的方式完全错误——$()是用来捕获命令输出的,无法处理交互式程序的输入需求,反而会因为逻辑问题导致执行异常。
错误点排查
你的示例脚本存在两个关键问题:
- 子shell用法错误:
$()不适合执行需要接收输入的交互式程序,它的作用是捕获命令的输出结果,而非驱动交互式工具完成任务。 - 未给JIL传递输入:直接调用
jil会进入交互式编辑界面,脚本会停在这里等待用户输入,后续命令自然无法执行。
正确实现方式
JIL支持从标准输入读取命令,因此可以用Here Document(<< EOF)的方式,自动将JIL配置命令传递给程序,无需进入交互式界面。以下是修正后的脚本示例:
echo "script starts" # 切换到目标目录,添加错误处理避免后续操作出错 cd /path/to/source/folder || exit 1 # 通过Here Document向jil传递配置命令 jil << EOF insert_job: my_autosys_task job_type: c command: /usr/bin/your_task_command machine: target_host_name owner: autosys_user # 按需添加其他JIL配置项,比如时间窗口、依赖关系等 EOF echo "Autosys任务添加完成"
关键说明
<< EOF是Shell的Here Document语法:它会将EOF之间的所有内容作为标准输入传递给jil命令,JIL会自动执行这些配置,不会进入交互式界面。cd ... || exit 1:确保目录切换失败时脚本直接退出,避免后续命令在错误的工作目录执行。- 所有JIL配置项要严格遵循Autosys的语法规范,比如
insert_job、job_type等关键字不能写错。
内容的提问来源于stack exchange,提问作者Omnishambles
相关产品推荐
相关产品推荐

