【问题标题】:bash sqlcmd variable arraybash sqlcmd 变量数组
【发布时间】:2020-08-12 17:08:52
【问题描述】:

我正在尝试访问从循环中的 sqlcmd 接收的变量中的值:

while read line ;do AllNumbers=`sqlcmd -h -1 -S mysqlserver.localdomain -U Me -P MyPasswd -d master -Q "SET nocount on; SELECT PHONENUMBER FROM MYTABLE WHERE USER LIKE '"$line"' " < /dev/null`; for i in "$AllNumbers"; do echo "$line $i"; done; done< mytext.txt

变量“$AllNumbers”中的结果数可以是 1 到 5,数字的长度也可以变化。 我在瞬间得到的是:

约翰 01234567

9876543

杰克 13579024

吉姆 08642135

10293847

56473829

最后我想要一个输出如下:

约翰 01234567

约翰 98765432

杰克 13579024

吉姆 08642135

吉姆 10293847

吉姆 56473829

我尝试使用 IFS,但我不确定变量 $AllNumber 中的分隔符是什么。 如果我这样做:

OneUser=`sqlcmd -h -1 -S mysqlserver.localdomain -U Me -P MyPasswd -d master -Q "SET nocount on; SELECT PHONENUMBER FROM MYTABLE WHERE USER LIKE '"Jim"' "`; echo "$OneUSer"

我明白了:

08642135

10293847

56473829

我很高兴有任何提示......

提前致谢

乐天

【问题讨论】:

    标签: bash variables sqlcmd


    【解决方案1】:

    为什么不让数据库做艰苦的工作呢?

    SELECT USER, PHONENUMBER FROM MYTABLE WHERE USER LIKE '"$line"'
    

    另外,请确保验证 $line 以防止 SQL 注入攻击(请参阅 Bobby Tables)。

    【讨论】:

    • 我知道,以上都是一个例子,最后我需要将一个变量的内容拆分成单块...
    • 它在将 sqlcmd 的输出重定向到一个文件时工作,去掉空格并逐行读取,但是当 sqlcmd 的输出提供多个结果时没有运气......我可以看不到变量中的特殊字符...作为另一种尝试,当使用多个 SELECTS 查询 sqlcmd 时,它的工作原理就像魅力...但最后我想拆分结果字符串的输出...
    猜你喜欢
    • 1970-01-01
    • 2016-05-11
    • 1970-01-01
    • 2022-08-22
    • 2018-06-24
    • 2017-12-01
    • 2013-05-15
    • 2019-07-12
    • 1970-01-01
    相关资源
    最近更新 更多