【发布时间】:2016-04-01 08:22:55
【问题描述】:
我正在尝试编写以下代码,但 awk 没有正确检查 if 语句
#!/bin/bash
sqlplus -S username/pwd << EOF
SET ECHO off;
Set FEEDBACK off;
SET TRIMSPOOL on;
SET TAB off;
SET TERMOUT OFF;
set HEADSEP off;
SET HEADING on;
SET LINESIZE 1000;
SET WRAP off;
set serveroutput off;
SPOOL /tmp/sql_output.xls
select * from (
select PROCESS_SRC_STATUS_IND,PROCESS_RUN_TIME_ID,PROCESS_ID from raptore.tb_process_prod c
where PROCESS_ID in (116)
order by PROCESS_CREATE_DTM desc
)
where rownum=1
spool off
exit;
EOF
awk '{
if ( $1 == "C")
then
print "Job J4051 has successfully run for date " $2
elif ($1 == "P")
then
print "Job J4051 is pending for date " $2
elif ($1 == "F")
then
print "Job J4051 is failed for date " $2
}' /tempt/sql_output.xls
sql查询输出:
C 20160330 116
脚本的输出:
作业 J4051 已成功运行日期 20160330 作业 J4051 待定日期为 20160330 日期 20160330 的作业 J4051 失败
理想的输出应该只是上述行之一,但脚本正在将所有打印行打印为输出..请帮助
【问题讨论】:
-
您尝试打印
$1吗?他的价值是什么?也许您不需要使用 awk .. 您应该使用标准 bashif语句 -
它使用 awk 读取 sql 查询的输出...正常,否则无法正常工作我想我需要将输出值分配给一个变量,所以我使用的是 awk