已编辑
我正在尝试从 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/