繁体   English   中英

bash脚本中的特殊字符

[英]special characters in bash script

我有一个bash脚本,其中包含以下行

mysql -uusername -ppassword -e 'UPDATE \'table-name.config\' SET value=1234567890 WHERE action_code=102 AND name=\'last_updated_date\';'

但我明白了

./hybrid_telepath/install: line 856: unexpected EOF while looking for matching `''
./hybrid_telepath/install: line 872: syntax error: unexpected end of file

显然我的角色有问题,并且收线不正确。

知道如何在bash中进行操作吗?

如果我将其更改为

mysql -uusername -ppassword -e "UPDATE `table-name`.`config` SET value=1312626266 WHERE action_code=102 AND name='last_updated_date';"

我懂了

line 1: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'SET value=1312626266 WHERE action_code=102 AND name=last_updated_date' at line 1

谢谢

转义序列在单引号内不起作用。 将双引号用作最外面的引号,然后就不必在其中转义单引号了:

mysql -uusername -ppassword -e "UPDATE 'table-name.config' SET value=1234567890 WHERE action_code=102 AND name='last_updated_date';"

以前的海报是正确的。 除了建议您使用双引号之外,您可能还希望开始分别构建queryString。 当您在脚本编写方面变得更好时,这种做法将对您有好处(并且希望可以继续使用Python之类的东西)。 在脚本中硬编码数据库凭据也是一种不好的做法。 请注意,您可以在其他地方(即,在另一个脚本中)定义这些值,然后仅提供该脚本的源代码。 这使您的代码模块化。 更好的是,编写函数,源代码和重用。 这是一个例子:

#!/bin/bash
. /etc/myDbCreds

myQuery="select * from foo where bar ='snafu';"

mysql -u $myUser -p${myPass} -e $myQuery

尝试这个:

mysql -uusername -ppassword -e "UPDATE \'table-name.config\' SET value=1234567890 WHERE action_code=102 AND name=\'last_updated_date\';"

我对mysql cmd的-e“”有类似的问题。

这看起来很正常:

$ mysql -h vip0 -u root -pqwerty -e "show databases;" 
+--------------------+ 
| Database           | 
+--------------------+ 
| information_schema | 
| mysql              | 
| performance_schema | 
+--------------------+ 

但是,如果我想通过ssh执行它,它将无法正常工作:

$ ssh g1 --  mysql -hvip0 -uroot -pqwerty -e "show databases;" 
ERROR 1049 (42000): Unknown database 'databases' 

经过测试,似乎我需要逃脱空间:

$ ssh g1 --  mysql -hvip0 -uroot -pqwerty -e "show\ databases;" 
Database 
information_schema 
mysql 
performance_schema

但是我不明白为什么...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM