如何在Unix系统通过PuTTY批量顺序提交SAS作业并实现出错终止?
按顺序执行SAS程序并在出错时终止的解决方案
在Unix环境下,你可以通过编写一个简单的shell脚本来实现按顺序执行SAS程序、出错即停的需求。下面是具体的实现步骤和脚本示例:
1. 创建Shell脚本
新建一个名为sas_batch_run.sh的文件,内容如下:
#!/bin/bash # 按执行顺序列出你的10个SAS程序 SAS_JOB_LIST=( "first_program.sas" "second_program.sas" "third_program.sas" "fourth_program.sas" "fifth_program.sas" "sixth_program.sas" "seventh_program.sas" "eighth_program.sas" "ninth_program.sas" "tenth_program.sas" ) # 循环处理每个SAS作业 for job in "${SAS_JOB_LIST[@]}"; do echo "=== 开始执行作业: $job ===" # 执行SAS程序,若你的SAS命令路径不同,请替换为实际路径(比如/usr/local/sas/bin/sas) sas "$job" -log "${job%.sas}.log" -print "${job%.sas}.lst" # 检查上一个命令的退出状态码 if [ $? -ne 0 ]; then echo "!!! 作业 $job 执行失败,终止后续所有作业 !!!" exit 1 fi echo "=== 作业 $job 执行成功 ===" done echo "✅ 所有10个SAS作业已全部执行完成!"
2. 脚本关键细节说明
- 作业顺序控制:
SAS_JOB_LIST数组里的元素顺序就是作业的执行顺序,你可以根据实际需求调整文件名和顺序。 - 错误终止逻辑:
$?是Unix系统中前一个命令的退出状态码,SAS程序执行成功时返回0,出错时返回非0值。脚本检测到非0状态码后,会立即用exit 1终止运行,后续作业不会再执行。 - 日志与输出文件:通过
-log和-print参数,每个SAS作业的日志会单独保存为xxx.log,输出列表保存为xxx.lst,方便你后续排查问题。
3. 运行脚本的步骤
- 把脚本上传到你存放SAS程序的Unix目录下(或者直接在PuTTY里用
vi/nano创建)。 - 给脚本添加执行权限:
chmod +x sas_batch_run.sh - 运行脚本:
./sas_batch_run.sh
这样就能严格按照顺序执行你的SAS作业,一旦某个环节出错,后续作业会立刻停止,完全符合你的需求。
内容的提问来源于stack exchange,提问作者naveen p
相关产品推荐
相关产品推荐

