2016-06-10 70 views
-1

假設我有一個查詢先在表中插入某些值,然後下一個查詢將顯示其中一列的最大值,然後將其存儲在變量中。然後我需要顯示該變量,使其顯示最大值。 例如:將MySQL「SELECT」查詢傳遞給shell變量

sudo mysql -u$mysql_user -p$mysql_pwd -h $mysql_host --database $db_name -e "INSERT INTO service_status_batch VALUES();" 
batch_id= sudo mysql -u$mysql_user -p$mysql_pwd -h $mysql_host --database $db_name -e "SELECT MAX(id) as maxid FROM service_status_batch;" 
echo "Value of the id is:" $batch_id 

此回顯命令應該顯示變量的值。然而,它最終會以表格形式顯示選擇查詢的值,而不是變量的值。

是否有一種特殊的方式來將查詢值分配給shell腳本中的變量?

我附加了它顯示的select查詢值。

not showing the value of the batch id variable

回答

0

使用-s-N選項像這樣mysql命令。

sudo mysql -u$mysql_user -p$mysql_pwd -h $mysql_host --database $db_name -e "INSERT INTO service_status_batch VALUES();" 
batch_id=`sudo mysql -u$mysql_user -p$mysql_pwd -h $mysql_host --database $db_name -s -N -e "SELECT MAX(id) as maxid FROM service_status_batch;"` 
echo "Value of the id is:" $batch_id 

參考的細節-s和-n:

--silent, -s 

    Silent mode. Produce less output. This option can be given multiple 
    times to produce less and less output. 

    This option results in nontabular output format and escaping of 
    special characters. Escaping may be disabled by using raw mode; see 
    the description for the --raw option. 

--skip-column-names, -N 

    Do not write column names in results. 
+0

仍然沒有工作 –

+0

你會得到什麼錯誤? –

0

EDIT3:不好解釋 - 我試圖展示如何獲取值認爲它可以作爲必要的:

sudo echo $(echo "SELECT MAX(id) as maxid FROM service_status_batch" | mysql dbnamehere -uUser -pPassword) 

編輯1:明顯是變量版本

EDIT2:按照建議使用shellcheck.net修正變量賦值。謝謝。

EDIT3:最後一次編輯在mysql命令之前添加sudo,因爲如果沒有root用戶以外的用戶,它將無法正常工作。

batch_id=$(echo "SELECT MAX(id) as maxid FROM service_status_batch" | sudo mysql dbnamehere -uUser -pPassword) 
+0

在20秒內編輯以顯示變量賦值。希望能幫助別人,因爲它能幫助我。 – smozgur

+1

第一個'sudo echo'增加了複雜性,不必要的特性和安全問題,而沒有實際嘗試解決OP的問題。但無論如何,如果新訪問者點擊重複而不是檢查答案,新訪問者會更好,因爲他們將被許多訪問者正確地審查。 – tripleee

+0

@tripleee你是對的。我只是編輯一切,因爲它應該是保持正確。也許我應該刪除我的答案? – smozgur