我真的很羞于问这个问题,但是真的有办法将 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(出于显而易见的原因)。有谁知道任何解决方法?干杯!!