在创建一个sqlcmd在循环中调用不同变量的 bash 脚本时,注意到它似乎将在第一次调用时应在循环中更新的循环变量设置为常量(可以看出这很可能是罪魁祸首)continueing 以及循环的后面和后面的部分,直到到达该sqlcmd部分)。IE。如果我们用 循环遍历 MSSQL Server 表名的列表(长度为 L)sqlcmd,则循环将执行,而不是 L,而是仅使用列表中的 第一个条目进行循环指令的无限迭代。
一个最小的例子如下:
#!/bin/bash
tables_list=$1
while read -r line
do
tablecols="$line"
IFS=',' read -a arr_tablecols <<< "$tablecols"
mssql_tablename=${arr_tablecols[0]}
echo -e "\n\n\n##### Processing: $mssql_tablename #####\n"
TO_SERVER_ODBCDSN="-D -S <ODBC DSN name for mssql host>"
TO_SERVER_IP="-S <my mssql host IP>"
DB="ClarityETL_test"
TABLE="$mssql_tablename"
USER=<my mssql username>
PASSWORD=<my mssql login password>
#uncomment to see that sqlcmd does in fact appear to be the problem …Run Code Online (Sandbox Code Playgroud)