mysql - 把MySQL命令输出放到一个变量里,也打印在屏幕上?

标签 mysql linux bash shell

我真的很不好意思问这个问题,但是真的有办法将 MySQL 输出(例如 ls -l)重定向到 STDOUT 并同时分配给变量吗?我试过这个:

san@pcjq:~$ exec 5>&1
san@pcjq:~$ SQL=$(mysql -uroot -p mysql -e "SELECT Host,User,Password FROM user;" | tee >(cat - >&5))
Enter password: 
Host    User    Password
127.0.0.1   root    *CD0B39440D9701958FDA10ED6B02E3507DC28EB
%   slvUser *8E6F445A9F0E7AA18DA1D830CC61B5AAC9C606
localhost   root    *CD0B39440D9701958FDA10ED6B02E3507DC28EB
localhost   san *8E6F4A10ED6B00E7AA18DA10EDD830CC61B5AAC9C606
localhost   debian-sys-maint    *1BF46B679FC8911CD06712EC782E446F01201CB7

这并不是我们通常在屏幕上看到的输出的确切表示。另一方面:

SQL=$(mysql -uroot -p mysql -e "SELECT Host,User FROM user;" >&2)

确实在屏幕上打印了正确的输出,但注意到变量中有 gets(原因很明显)。有谁知道任何解决方法?干杯!

最佳答案

回答我自己的问题:

san@pcjq:~$ SQL=$(mysql -uroot -p mysql -t -e "SELECT Host,User FROM user;" \
| tee /dev/tty) && { echo "This is the ECHO:"; echo "$SQL"; }
Enter password: 
+-----------+------------------+
| Host      | User             |
+-----------+------------------+
| %         | slvUser          |
| 127.0.0.1 | root             |
| localhost | debian-sys-maint |
| localhost | root             |
| localhost | santanu          |
+-----------+------------------+
This is the ECHO:
+-----------+------------------+
| Host      | User             |
+-----------+------------------+
| %         | slvUser          |
| 127.0.0.1 | root             |
| localhost | debian-sys-maint |
| localhost | root             |
| localhost | santanu          |
+-----------+------------------+

-t 是神奇的选项。来自 MySQL 手册页:

--table, -t

       Display output in table format. This is the default for interactive use, 
       but can be used to produce table output in batch mode.

干杯!

关于mysql - 把MySQL命令输出放到一个变量里,也打印在屏幕上?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15931506/

相关文章:

mysql - 在 SQL 中获取关于日期的平均值

linux - 修剪文本表并将值存储为变量

git - 创建带格式的 'git log' 别名

git - 测试确定 git clone 命令是否成功

mysql - MySQL 中 IFNULL 或 OR 逻辑哪个更好

mysql - 传递给 Mysql 数据库的语句未填充数据表

mysql - Laravel 中如何通过数据透视表获取相关模型?

c - 套接字阻塞 :( How do i get out?

java - 为什么 ssh 的 Linux java -version 给出不同的结果?

linux - 如何从 bash 的历史记录中选择行的子集?