如何为MySQL制作Bash插入脚本

时间:2014-04-10 10:42:14

标签: mysql bash

我已经尝试了两天来制作一个简单的脚本,它将一个参数(一个查询)提供给mysql -e来执行它。但出于某种原因,我无法在脚本中使用mysql -e,这是我的测试:

我可以在bash中成功运行以下行:

mysql -u abrouze -p simubase -e "insert into Processing values(1,2,3,'coca cola')"

值得注意的是,我需要在值中传递带有空格的完整字符串。

现在,这是我的脚本:

#!/bin/bash
req="\"$1\""
echo $req
mysql -u abrouze -p simubase -e $req

在这里转义引号,因此$ req实际上被引号包围,并且它不起作用。

追踪:

brouze@lasb-ida:~$ ./myrage.sh "insert into Processing values(1,2,3,'huge bear')"
"insert into Processing values(1,2,3,'huge bear')"

mysql  Ver 14.14 Distrib 5.5.35, for debian-linux-gnu (x86_64) using readline 6.2
Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.

在此之后,帮助文本墙。

对我来说这似乎是微不足道的,我绝对不知道它是如何起作用的......

1 个答案:

答案 0 :(得分:1)

您可以使用heredoc,将脚本设为:

#!/bin/bash
mysql -u abrouze -p simubase << EOF
$1
EOF

然后像以前一样调用你的脚本:

./myrage.sh "insert into Processing values(1,2,3,'huge bear');"