2014-09-23 65 views
0

我是编写shell脚本的新手。需要“构建”一个mysql命令并将其在shell脚本中执行它

我正在尝试使用shell脚本创建数据库。这里的脚本:

#!/bin/bash 
#create a new db 
a="mysql -uuser -ppassword -e'create database $1;'" 
exec $a 

命令exec mysql -uuser -ppassword -e'create database databaseName;'作品的外壳,但是当我sh剧本,我得到的MySQL的帮助下开...

+0

[如何编写和执行shell脚本来创建mysql数据库和表](http://stackoverflow.com/questions/18271925/how-to-write-and-execute-a-shell -script-to-create-a-mysql-databse-and-a-table) – Miki 2014-09-23 20:41:30

回答

1

我觉得问题是在引号中,简单的引号防止了变量的扩展。 你可以简单地做这样的脚本:

#!/bin/bash 
    #create a new db 

    mysql -u user -p password -e "create database $1;" 

或者你可以尝试把你所有的MySQL命令在一个文件中,让我们说“dbname.sql”。 而做到这一点:

#!/bin/bash 
    #create a new db 

    mysql -u user -p password "$1" < "$1.sql" 
+1

+1这里没有必要使用exec。 – chepner 2014-09-24 00:21:34

0

听起来像你需要使用“猫”命令和一个管道,而不是使用'exec'。

cat /path/to/my/file | mysql -h localhost -u root -padmin 
1

如果你喜欢使用EXEC运行命令,这可能是一个可行的解决方案

#!/bin/bash 
    #create a new db 
    programm="mysql" 
    parameter[0]="-ppassword" 
    parameter[1]="-uuser" 
    parameter[2]="-ecreate database $1;" 
    exec "$programm" "${parameter[@]}" 

的exec参数是

exec [-a NAME] [-cl] [COMMAND] [ARG...] [REDIRECTION...]

命令$programm和数组parameter是参数列表。

相关问题