如何将SQL查询中的值读入shell脚本中的变量?

时间:2015-08-05 13:51:16

标签: bash shell

如何将SQL查询中的值读入shell脚本中的变量? 输出将打印到日志文件中。 sql查询的值可能不同,因此我想将其捕获到变量中以测试其值。

输出来自日志消息功能,他在日志文件中打印3行(称为3次),我要查找的值是$ logMsg打印的第二行。

输出代码为:

echo "$dateStamp Program: $programName: PID=$programPID: $logMsg $logFunc" >> $LOGFILE

输出如下:

Fri Jul 31 15:06:06 Program: test3: PID=3570: completed EXECUTE_SQL

查询值为:"已完成",但可以"中止过程" ...

我尝试的是:

abc=`grep -o completed ${LOGFILE} | tail -2` 
echo $abc

但结果一直都是完成的。出了点问题。 谢谢你的回答。

2 个答案:

答案 0 :(得分:0)

好像你只想打印第二行的倒数第二个字段:

value=$(tail -2 ${LOGFILE} | awk '{print $(NF-1)}')

如果用逗号等界定日志文件,这些事情一般也会更容易。

答案 1 :(得分:0)

目前,您只需要completed (选项-o),因此毫无疑问您将始终只接收此字符串(只要它是在日志文件的最后两行;否则你会收到一个空字符串。)

您可以列出可能收到的所有值,并使用扩展正则表达式来“或”它们(使用|)。然后,您将使用了解扩展正则表达式的egrep

abc=$(egrep -o 'completed|abort in process' "${LOGFILE}" | tail -2)