2017-11-03 98 views
0

在泊塢窗容器中運行,我想,以確定是否在MSSQL數據庫中的表退出:SQLCMD在bash文件 - 商店變量

RESULT='/opt/mssql-tools/bin/sqlcmd -S localhost -U sa -P $SA_PASSWORD -d master -i "SELECT name FROM master.sys.databases WHERE name = N'MyTable'"' 
    if [ "$RESULT" == "MyTable" ]; then 
     echo YES 
    fi 
    echo "$RESULT" 

echo "$RESULT"永遠只是輸出整個命令作爲一個字符串,其沒有得到執行。所以它只是將它分配爲刺...

我該如何執行並分配結果?

+1

不應該它是'RESULT = $(...)'?而不是'RESULT ='...''?請參閱:https://stackoverflow.com/questions/4651437/how-to-set-a-variable-to-the-output-from-a-command-in-bash – codeforester

回答

0

Bash不執行用單引號定義的命令。單引號用於字符串定義。

你試圖做的事情叫做命令替換。它可以以兩種不同的方式來完成:

RESULT=`command` 
RESULT=$(command) 

所以你的例子應該是這樣的:

RESULT=`/opt/mssql-tools/bin/sqlcmd -S localhost -U sa -P $SA_PASSWORD -d master -i "SELECT name FROM master.sys.databases WHERE name = 'MyTable'` 
if [ "$RESULT" == "MyTable" ]; then 
    echo YES 
fi 
echo "$RESULT" 

您可以找到有關命令替換這裏的更多信息: https://www.gnu.org/software/bash/manual/html_node/Command-Substitution.html