如何将shell脚本写入多行文本从mysql读取文件?

时间:2016-07-17 00:46:07

标签: php mysql shell

我在编写shell脚本时遇到问题。我有一个数据库中的表,其中有一个文本字段..我需要将该字段写入文件。

数据库字段是id,file_name,text

这是我的脚本

#!/bin/bash
while read -a row
do
cat <<EOF >/root/${row[1]}
${row[2]}
EOF
sleep 1
done < <(echo "SELECT * FROM installation WHERE status = 1" | mysql -h 127.0.0.1 -u root -padmin -D data -s)

我试过

echo "${row[2]}" > /root/${row[1]}

但它只写了第一行,但是 文本字段是多行文本,我需要在该文件中写入全文

请帮助

1 个答案:

答案 0 :(得分:0)

默认情况下,read -r row会按空格/制表符/换行符进行单词拆分。由于表格中的文本字段包含换行符,因此单词拆分会削减文本结果。在这种情况下,很难避免它。

我建议您将新线替换为另一个标记,例如###或只是new-line,在SQL中使用REPLACE(text, "\n", 'new-line')(我不熟悉sql REPlACE函数),然后从shell获取结果,然后使用${row[2]//new-line/$'\n'}将新行转换回来