【问题标题】:need to "build" a mysql command and exec it in a shell script需要“构建”一个 mysql 命令并在 shell 脚本中执行它
【发布时间】:2014-09-23 20:34:41
【问题描述】:

我是编写 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;' 在shell 中工作,但是当我sh 脚本时,我打开了mysql 帮助...

【问题讨论】:

标签: mysql linux bash shell command


【解决方案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"

【讨论】:

    【解决方案2】:

    如果你喜欢使用 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...]

    command 是$programm,数组parameter 是参数列表。

    【讨论】:

      【解决方案3】:

      听起来你需要使用 'cat' 命令和管道而不是使用 'exec' 。

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

      【讨论】:

        猜你喜欢
        • 2012-12-22
        • 2012-07-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-03-07
        • 1970-01-01
        • 2018-09-19
        相关资源
        最近更新 更多