gpt4 book ai didi

mysql - 为什么 mysql 命令不能在 shell 中被字符串替换?

转载 作者:太空宇宙 更新时间:2023-11-03 11:57:12 25 4
gpt4 key购买 nike

mysql -u root -ppasswd -e"use test_db;"

该命令可以在shell控制台运行,无需进入mysql控制台。

为什么下面两行不能在shell控制台运行?

str="use test_db;"
mysql -u root -ppasswd -e$str;


ERROR 1049 (42000): Unknown database 'test_db;'

最佳答案

这里的问题是 shell 正在拆分你的字符串,所以你的命令最终是这样的:

mysql -u root -ppasswd -euse test_db;

test_db; 被解释为一个单独的参数,数据库的名称。

要解决这个问题,使用引号:

str="use test_db;"
mysql -u root -ppasswd -e"$str"

我删除了分号,因为您似乎指定了两次。对于单个命令,我认为您根本不需要它,但我想您的脚本实际上会比这更复杂。

顺便说一句,您可以通过指定数据库来跳过 use db_name 命令(就像您不小心做的那样):

str="select col1, col2 from table"
mysql -u root -ppasswd -e"$str" test_db

关于mysql - 为什么 mysql 命令不能在 shell 中被字符串替换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31771806/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com