2013-10-08 135 views
1

我的bash:「測試」與功能「查詢」功能在bash不工作

#!/bin/bash 
MY_USER="root" 
MY_PASSWORD="my_password" 
MY_BD="my_db" 
MY_HOME="/home/express" 

function query { 
    mysql -e $1 -u $MY_USER --password=$MY_PASSWORD $MY_BD 
} 

case $1 in 
"period") 
    mysql -e "SELECT cron_period()" -u $MY_USER --password=$MY_PASSWORD $MY_BD;; 
"hold") 
    query "SELECT cron_hold()";; 
*) 
    echo "Others";; 
esac 

測試:

testing period // Working with complete command 
testing hold // Not working with function query, show commands info of MySQL 

使用功能查詢時,但不知道如何的問題是糾正它。

有什麼建議嗎?

+1

也許你想引用' $ 1'在雙引號中? – kojiro

+0

感謝@kojiro,現在工作! – alditis

+1

http://mywiki.wooledge.org/BashGuide/Practices#Quoting – kojiro

回答

3

嘗試這樣即把$1雙qoutes:

function query { 
    mysql -e "$1" -u $MY_USER --password=$MY_PASSWORD $MY_BD 
} 
+1

感謝@Rahul Tripathi,現在工作! – alditis

+1

接受和Upvote準備好了,謝謝:) – alditis

4

嘗試在你的函數中放置$ 1的雙引號。

+0

謝謝@Ben,現在工作! – alditis

1

試一下:

功能查詢{

mysql -e ${1} -u $MY_USER --password=$MY_PASSWORD $MY_BD 

}

+0

在Ubuntu中不適合我。謝謝。 – alditis