【问题标题】:How to run a MySQL procedure from a Linux shell script and store its output in a file如何从 Linux shell 脚本运行 MySQL 过程并将其输出存储在文件中
【发布时间】:2019-02-13 08:40:09
【问题描述】:

我有一个 mysql 程序,我想从 linux 中的 shell 脚本运行它并将输出存储在日志文件中。但是我的脚本不起作用。以下是我的脚本:

#!/bin/bash    
source CX20-PIM-properties.prop    
status=$(mysql -u $user -h $host -D $database -se "call fetchFromPAsIsToPIDX()")    
if [ $status ]; then  
     echo "Procedure executed successfully" |  tee  procedure_output.log  
else  
 echo "Procedure execution failed" |  tee procedure_output.log  
fi

输出如下:

[anurag@pimdev0 ~]$ ./load-from-AsIs-to-IDX.sh   
 Procedure execution failed

【问题讨论】:

  • 状态包括什么?你能echo $status
  • 您是否也测试过您的命令是否有效? mysql -u $user -h $host -D $database -se "call fetchFromPAsIsToPIDX()" > output.txt
  • @Simonare $status 没有返回任何值。当我回显 $status 时它显示为空。我测试了其他 sql 查询(如 select)的命令,它可以工作,但在过程的情况下,我的脚本无法运行过程查询或显示其输出

标签: mysql linux shell


【解决方案1】:

你应该将 cmd 的返回值存储在状态而不是 cmd 的标准输出中。

#!/bin/bash    
source CX20-PIM-properties.prop    
if [ `mysql -u $user -h $host -D $database -se "call fetchFromPAsIsToPIDX()" &> /dev/null` ]; then  
     echo "Procedure executed successfully" |  tee  procedure_output.log  
else  
 echo "Procedure execution failed" |  tee procedure_output.log  
fi

【讨论】:

  • 好的,谢谢你的建议。让我检查一下这种方法是否有效
猜你喜欢
  • 2020-06-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-08
  • 2017-08-21
  • 1970-01-01
  • 2016-06-08
相关资源
最近更新 更多