我的系统是Ubuntu 16.04,MariaDB版本是10.2.38。
我想从shell获得Ubuntu版本,并将结果保存在sql变量中。
MariaDB [(none)]> \! lsb_release -r;
Release: 16.04
我执行了下面的判决。
MariaDB [(none)]> set @ver = '\! lsb_release -r';
Query OK, 0 rows affected (0.00 sec)
但是@ver变量中存储的值让我很失望。
MariaDB [(none)]> select @ver;
+------------------+
| @ver |
+------------------+
| ! lsb_release -r |
+------------------+
1 row in set (0.00 sec)
我想知道如何将值16.04保存到变量中。谢谢。
3条答案
按热度按时间lf5gs5x21#
\!
是一个mariadb(和mysql)命令行扩展,用于执行shell命令进行维护,它将在客户端执行,而不是在服务器上执行,并且不能与SQL命令混合使用。SQL不支持其他程序的执行--这个特性将是一个巨大的安全风险。
要将shell命令的输出存储在SQL变量中,可以在启动命令行客户端时使用--init_command选项:
fnatzsnv2#
如果您使用的不是维护结束版本,其中MariaDB由上游打包,则在最后1-2个版本中,它最后存储在
@@version
中:hfyxw5xn3#
在POSIX shell级别回答:自
lsb_release -r
打印以来 * 版本:16.04* 在标准输出上,命令应仅打印 16.04。