mysql - 如何向 bash 字符串添加括号和单引号

标签 mysql string bash

已编辑

我正在尝试从 bash 脚本在我的 mysql 数据库中进行一些插入。在这个数据库中有一些 varchar 类型的参数,所以我在查询时必须引用它们

我这样执行查询

mysql --user=**** --password=**** -e $ext 数据库名称

我想在 $ext 中引入下一个文本:insert into tname (string,int) values ('$var',$ivar)

问题是,当我尝试插入括号和“'”时,它们只放入字符串的开头。

在我未能放置示例之后,我将发布部分代码: 我从文件中获取数据并将所有行存储在 myarray 中;

while IFS=$'\n' read -r line_data; do
myarray[i]="${line_data]"
((++i))
done < file.txt

然后在其他 while

somevar=${myarray[i++]}
var="'$somevar'"
echo $somevar
echo $var

结果:

Hello
'Hello

最佳答案

您的赋值语法不正确。 $ 仅在引用变量时使用,而不是在为其赋值时使用。修正你的作业,它应该可以正常工作:

$ var=foo
$ ivar=23
$ ext="insert into tname (string,int) values ('$var',$ivar)"
$ echo $ext
insert into tname (string,int) values ('foo',23)

现在您可以在命令中使用它,如下所示:

mysql --user=**** --password=**** -e "$ext" dbname

有多种方式可能会出错,具体取决于您尝试插入的数据中的字符,并且写入文件而不是变量可能更容易。

关于mysql - 如何向 bash 字符串添加括号和单引号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33764883/

相关文章:

string - 将 NSString(contentsOfURL :. ..) 转换为字符串?

linux - 抑制段错误信号

arrays - bash 列出文件夹中的所有子目录,将它们写入数组以在菜单中使用

mysql - 如何在 MySql 表中存储 MS Sql Server 唯一标识符

php - MySQL 查询对 GROUP BY 3 表计数中的结果进行排序

c - 以像素为单位的字符串宽度

linux - 为什么 Bash 对启动文件有如此奇怪的行为

c# 自动将 am/pm 添加到我的(字符串)日期值

mysql - InnoDB 设置修改对现有/新数据库的影响

c# - .net 和 IndexOf 中的特殊符号