我正在使用mysql命令(使用--table参数)
解析查询结果local records=`echo "${query}" | $MYSQL -u $MyUSER -h $MyHOST -p$MyPASS --table`
查询运行成功,我收到了很好的数据。
然后我迭代这些数据:
for data in $records ;
do
test+=$data
done
代码更广泛,但基本上就是这样。 Bash将每个空格视为分隔符,这对于文本字段来说是个问题。
所以我只是将它们连接起来。但是当我向bash提供这些数据时:
*URL*
host:
test.url.com
pass:
anothertest
http://www.test.com
它将它连接到类似的东西:
pass:test.url.com.com
好像它不是连接,而是覆盖。 这可能是一些回车问题吗?
答案 0 :(得分:20)
我从curl
命令检索到的stderr输出遇到了同样的问题。我发现输出包含需要删除的回车符。对于上面的示例,可以使用tr
工具完成此操作:
for data in $records ;
do
data=$(echo "$data" | tr -d '\r')
test+="$data"
done
答案 1 :(得分:2)
确保您使用的是Bash 3或更高版本。 Bash中的+=
运算符可用于操作数组。它将使用IFS
变量的当前值来拆分标记并将值添加到数组中。
尝试:
test="$test $data"
连接数据
答案 2 :(得分:2)
检查您是否使用Unix行结尾。使用Windows行结尾会对我造成相同的行为,覆盖字符串。
答案 3 :(得分:0)