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