首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在ubuntu中使用脚本添加带有连字符的数据库名称

如何在ubuntu中使用脚本添加带有连字符的数据库名称
EN

Stack Overflow用户
提问于 2016-02-24 10:15:46
回答 1查看 26.5K关注 0票数 18

我曾尝试在脚本中使用此代码,但它只是创建了反引号内的内容。在本例中,在数据库中创建了"echo "table-db"“。它没有在查询中创建带有连字符的文件夹名称

hyph=`ls -l $DBDIR | egrep '^d' | grep '.-.' | awk '{print $9}'`

dbhype=($hyph)


for dbtry in ${!dbhype[*]}
   do            
        mysql -u$dbUser -p$dbPass -e 'CREATE DATABASE IF NOT EXISTS `echo "table-db"` CHARACTER SET utf8 COLLATE utf8_general_ci';

        echo "Database ${dbhype[$dbtry]} created."

done
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-02-24 10:31:28

在mysql查询中,表名为may contain字母数字字符、下划线和美元符号。为了能够使用其他ANSI字符,您必须将名称放在单反引号中。

`table-db`

但在bash中,它们有不同的含义,并用于command substitution。在bash中也有几种类型的字符串--双引号和单引号。它们之间的区别在于,在双引号中执行变量扩展和命令替换,而在单引号中则不执行。

mysql -e 'CREATE DATABASE `table-db`;'

但是在使用双引号时必须对它们进行转义,这样它们就不会被bash解释为命令状态。

mysql -e "CREATE DATABASE \`table-db\`;"

当您想要从变量中获取数据库名称时,您需要将其放在单引号字符串之外,如下所示:

mysql -e "CREATE DATABASE \`$dbname\`;"

或者像这样:

mysql -e 'CREATE DATABASE `'$dbname'`;'
票数 53
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35592034

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档