【问题标题】: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