2014-09-23 78 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是參數列表。

相關問題