如何在bash脚本中转义双引号字符串中的单引号?

两性离子

我正在尝试运行以下 bash 代码:

#!/bin/bash
export DEBIAN_FRONTEND=noninteractive

DB_USER='abc'
DB_USER_PASSWORD='123'
DB_MAGENTO='db_magento'

sudo apt-get update  
echo debconf mysql-server/root_password password $DB_USER_PASSWORD | sudo debconf-set-selections
echo debconf mysql-server/root_password_again password $DB_USER_PASSWORD | sudo debconf-set-selections        
sudo apt-get -qq install mysql-server > /dev/null # Install MySQL quietly
sudo mysql -uroot -p123  -e "CREATE SCHEMA ${DB_MAGENTO} DEFAULT CHARACTER SET utf8;SHOW DATABASES;CREATE USER \'${DB_USER}\'@'localhost' IDENTIFIED BY ${DB_USER_PASSWORD};GRANT ALL PRIVILEGES ON * . * TO \'${DB_USER}\'@'localhost'; FLUSH PRIVILEGES;SELECT Host,User,Password FROM mysql.user;"

我得到的错误ERROR at line 1: Unknown command '\''.似乎与\'${DB_USER}\'.

如何正确转义这些单引号?

更新

Afetr @Sergiy 建议我收到另一个错误:

#!/bin/bash
export DEBIAN_FRONTEND=noninteractive

DB_USER='ila'
DB_USER_PASSWORD='123'
DB_MAGENTO='db_magento'

    mysql -uroot -p123  -e "SHOW DATABASES;CREATE USER '${DB_USER}'@'localhost' IDENTIFIED BY ${DB_USER_PASSWORD};GRANT ALL PRIVILEGES ON * . * TO '${DB_USER}'@'localhost'; FLUSH PRIVILEGES;SELECT Host,User,Password FROM mysql.user;"

错误:

$ sudo ./installMagento.sh 
mysql: [Warning] Using a password on the command line interface can be insecure.
+--------------------+
| Database           |
+--------------------+
| information_schema |
| db_magento         |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
ERROR 1064 (42000) at 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 '123' at line 1
谢尔盖·科洛迪亚日内

您不需要使用\双引号:

$ DB_USER='abc'; echo "test '${DB_USER}'"
test 'abc'

或者,您可以打破双引号,并转义单引号 - 这是必要的:

$ DB_USER='abc';  echo "test"\'"${DB_USER}"\'
test'abc'

另一种方法是使用printf命令替换并使用引号 ( \x27) 的十六进制值

sudo mysql -uroot -p123  -e "$(printf 'CREATE SCHEMA \x27%s\x27 DEFAULT CHARACTER SET utf8;SHOW DATABASES;CREATE USER \x27%s\x27@\x27localhost\x27 IDENTIFIED BY %s ; GRANT ALL PRIVILEGES ON * . * TO \x27%s\x27@'localhost'; FLUSH PRIVILEGES;SELECT Host,User,Password FROM mysql.user;' ${DB_MAGENTO} ${DB_USER} ${DB_USER_PASSWORD}  ${DB_USER})"

旁注:脚本中有 3 个命令调用sudo. 这是多余的。只需将整个脚本作为运行即可,sudo myscript.sh无需添加sudo到每一行。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在包含单引号和双引号的字符串中转义单引号

来自分类Dev

如何在Java中的JSON解析器的字符串中转义双引号

来自分类Dev

如何在JavaScript中转义单引号或双引号?

来自分类Dev

如何从字符串中删除单引号或双引号?

来自分类Dev

如何在sqlserver的RFT字符串中转义单引号

来自分类Dev

如何在包含变量的逐字字符串中转义双引号

来自分类Dev

在单引号字符串中的onClick参数周围转义双引号

来自分类Dev

在单引号字符串中的onClick参数周围转义双引号

来自分类Dev

替换字符串中的单引号和双引号

来自分类Dev

字符串中的单引号和双引号的grep

来自分类Dev

在sed替换字符串中转义'(单引号)

来自分类Dev

如何在字符串变量中转义引号?

来自分类Dev

在bash脚本中转义双引号

来自分类Dev

不要在字符串中转义双引号

来自分类Dev

避免在字符串中转义双引号

来自分类Dev

kdb:避免在字符串中转义双引号

来自分类Dev

Java - '\' 未用于在字符串中转义双引号 "

来自分类Dev

如何使用转义匹配双引号中的字符串?

来自分类Dev

ANTLRv4:如何读取字符串中的双引号转义双引号?

来自分类Dev

混淆在单引号原始字符串文字中转义单引号

来自分类Dev

在单引号内的双引号中转义单引号

来自分类Dev

如何在Python列表中将带单引号的字符串元素转换为双引号

来自分类Dev

如何在JavaScript中转义所有单引号和双引号

来自分类Dev

如何在JSON数组中转义双引号和单引号

来自分类Dev

如何从字符串中删除双引号、单引号以及如何传入 ajax 调用

来自分类Dev

如何在 Common Lisp 中删除字符串中的转义双引号?

来自分类Dev

如何在grep中转义单引号

来自分类Dev

如何在Oracle中转义单引号?

来自分类常见问题

如何在sed中转义单引号?

Related 相关文章

  1. 1

    在包含单引号和双引号的字符串中转义单引号

  2. 2

    如何在Java中的JSON解析器的字符串中转义双引号

  3. 3

    如何在JavaScript中转义单引号或双引号?

  4. 4

    如何从字符串中删除单引号或双引号?

  5. 5

    如何在sqlserver的RFT字符串中转义单引号

  6. 6

    如何在包含变量的逐字字符串中转义双引号

  7. 7

    在单引号字符串中的onClick参数周围转义双引号

  8. 8

    在单引号字符串中的onClick参数周围转义双引号

  9. 9

    替换字符串中的单引号和双引号

  10. 10

    字符串中的单引号和双引号的grep

  11. 11

    在sed替换字符串中转义'(单引号)

  12. 12

    如何在字符串变量中转义引号?

  13. 13

    在bash脚本中转义双引号

  14. 14

    不要在字符串中转义双引号

  15. 15

    避免在字符串中转义双引号

  16. 16

    kdb:避免在字符串中转义双引号

  17. 17

    Java - '\' 未用于在字符串中转义双引号 "

  18. 18

    如何使用转义匹配双引号中的字符串?

  19. 19

    ANTLRv4:如何读取字符串中的双引号转义双引号?

  20. 20

    混淆在单引号原始字符串文字中转义单引号

  21. 21

    在单引号内的双引号中转义单引号

  22. 22

    如何在Python列表中将带单引号的字符串元素转换为双引号

  23. 23

    如何在JavaScript中转义所有单引号和双引号

  24. 24

    如何在JSON数组中转义双引号和单引号

  25. 25

    如何从字符串中删除双引号、单引号以及如何传入 ajax 调用

  26. 26

    如何在 Common Lisp 中删除字符串中的转义双引号?

  27. 27

    如何在grep中转义单引号

  28. 28

    如何在Oracle中转义单引号?

  29. 29

    如何在sed中转义单引号?

热门标签

归档