繁体   English   中英

将MySQL命令输出放到变量中并在屏幕上打印?

[英]Put the MySQL command output to a variable and also print on the screen?

我真的很ask愧地问这个问题,但是真的有办法将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)

确实在屏幕上打印了正确的输出,但注意获取了变量(出于明显的原因)。 有人知道有什么解决方法吗? 干杯!!

回答我自己的问题:

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 -u [user] -p[password] mydb -e "select * from [table]" > out.txt
# cat out.txt

要么

# echo $(mysql -u [user] -p[password] mydb -e "select * from [table]")

也许密码提示让您感到困惑。

*请记住,如果您的密码是“秘密”,则必须这样做:

# mysql -u [user] -psecret ....

希望这会有所帮助,Harlin

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM