bash文件中的sqlcmd - 存储到变量

时间:2017-11-03 23:26:18

标签: bash sqlcmd

在docker容器中运行,我试图确定一个表是否在mssql数据库中退出:

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 个答案:

答案 0 :(得分: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