我尝试从 shell 脚本执行一组查询,同时捕获日志文件中的输入(SQL 查询)和输出。
但输入查询不会与输出一起显示。日志文件中仅捕获输出。有没有办法捕获输入查询以及相应的输入?
我已经设置了echo on
,但是还是不行。
答案1
如果您的 shell 脚本是 bash 或 sh,您可以尝试将-x
开关附加到 shebang,然后运行该脚本。通常用于调试 shell 脚本,它将在执行之前打印下一行/命令。因此,如果您有下面的示例脚本,该脚本会记录到文件中logfile
#!/bin/bash -x
echo "Hello world!" >> logfile
echo "Second command!" >> logfile
然后您运行脚本,./script 2>> logfile
日志文件将如下所示:
+ echo 'Hello world!'
Hello world!
+ echo "Second command!"
Second command!
答案2
您的 SQL 客户端可能提供在显示结果之前回显查询的选项。例如,mysql
有一个-v
选项,使用一次后,就可以做到这一点。
输入:
echo "select 1 from dual" | mysql -v --table --user=u --password=p --host=h
输出:
--------------
select 1 from dual
--------------
+---+
| 1 |
+---+
| 1 |
+---+